單片機為什么要使用C言語?
單片機為什么要使用C言語呢?創客學院兩分鐘帶你搞懂
將C向MCU(俗稱單片機)8051上的移植始于80年代的中終期??陀^上講,C向8051 MCU移植的難點不少。如:
- 8051的非馮·諾依慢布局(步驟與數據存儲器空間分立),再加上片上又多了位尋址存儲空間;
- 片上的數據和步驟存儲器空間過小和同時存在著向片外擴展它們的約莫;
- 片上集成邊沿裝備的被存放器化(即SFR),而并不接納習用的I/O地點空間;
- 8051芯片的派生門類特別多(到達了上百種之多),而C言語關于它們的每一個硬件資源又無一例外地要能舉行利用。
這些都是已往以MPU為基本的C言語所沒有的。顛末Keil/Franklin、Archmeades、IAR、BSO/Tasking等公司艱若不懈的積極,終于于90年代開頭而趨成熟,成為專業化的MCU高等言語了。已往長時困擾人們的所謂“高等言語產生代碼太長,運轉速率太慢,因此不合適單片機使用”的致使缺陷已被大幅度地克制。現在,8051上的C言語的代碼長度,以前做到了匯編水平的1.2~1.5倍。4K字節以上的水平,C言語的上風更能取得發揚。至于實行速率的成績,只需有好的仿真器的協助,找出緊張代碼,進一步用人工優化,就可很簡便地到達十分完滿的水平。假如談到開發速率、軟件質量、布局嚴謹、步驟安穩等方面的話,則C言語的完善絕非匯編言語編程所可比力的。今天,的確以前到MCU開發職員拿起C言語利器的時分了。
底下團結8051先容單片機C言語的出色性:
- 不明白單片機的指令集,也可以編寫完善的單片機步驟;
- 無須明白單片機的具體硬件,也可以編出切合硬件實踐的專業水平的步驟;
- 不同函數的數據實行掩蓋,好效使用片上僅限的RAM空間;
- 步驟具有安穩性:數據被毀壞是招致步驟運轉特別的緊張要素。C言語對數據舉行了很多專業性的處理,制止了運轉正中非異步的毀壞;
- C言語提供繁復的數據典范(數組、布局、團結、擺列、指針等),極大地加強了步驟處理才能和機動性;
- 提供auto、static、const等存儲典范和專門針對8051單片機的data、idata、pdata、xdata、code等存儲典范,主動為變量公道地分派地點;
- 提供small、compact、large等編譯形式,以順應片上存儲器的輕重;
- 中綴辦事步驟的現場保護和規復,中綴向量表的填寫,是直接與單片機干系的,都由C編譯器署理;
- 提供常用的標準函數庫,以供用戶直接使用;
- 頭文件中界說宏、分析繁復數據典范和函數原型,有利于步驟的移植和支持單片機的系列化產物的開發;
- 有嚴厲的句法反省,錯誤很少,可容易地在高等言語的水平上敏捷地被排掉;
- 可便利地承受多種實用步驟的辦事:如片上資源的初始化有專門的實用步驟主動天生;再如,有及時多職責利用體系可調治多道職責,簡化用戶編程,提高運轉的寧靜性等等。
