【廣告】
單片機是什么
其實單片機的前身是單板機。將CPU芯片、存儲器芯片、I/O接口芯片和簡單的I/O設(shè)備(小鍵盤、LED顯示器)【I指的是輸入,O指的是輸出】裝配在一塊印刷電路板上,再配上監(jiān)控程序(固化在ROM中),就構(gòu)成了一臺單板微型計算機(簡稱單板機)。這就是起初的單板機。但是它軟件資源少,用起來不方便,早期主要用教學(xué)和簡單地測控,現(xiàn)在看來比較低端,所以基本上是淘汰了。
我們再看現(xiàn)在的單片機。
在一片集成電路芯片上集成微處理器、存儲器、I/O接口電路,從而構(gòu)成了單芯片微型計算機,就是單片機。
單片機的應(yīng)用范圍
單片機滲透到我們生活的各個領(lǐng)域,幾乎很難找到哪個領(lǐng)域沒有單片機的蹤跡。導(dǎo)航裝置,飛機上各種儀表的控制,計算機的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,工業(yè)自動化過程的實時控制和數(shù)據(jù)處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統(tǒng),錄像機、攝像機、全自動洗衣機的控制,以及程控玩具、電子寵物等等,這些都離不開單片機。更不用說自動控制領(lǐng)域的機器人、智能儀表、醫(yī)學(xué)器械以及各種智能機械了。因此,單片機的學(xué)習(xí)、開發(fā)與應(yīng)用將造就一批計算機應(yīng)用與智能化控制的科學(xué)家、工程師。單片機廣泛應(yīng)用于儀器儀表、家用電器、航空航天、設(shè)備的智能化管理及過程控制等領(lǐng)域。
單片機的燒寫原理
有三種方式:
1、把單片機當(dāng)做一個ROM芯片,早期的單片機都是如此。將單片機放在通用編程上編程時,就像給28C256這樣的ROM中寫程序的過程一樣。只是不同的單片機使用的端口,編程用的時序不一樣。
2、像AT89S52或AVR單片機一樣,在單片機上有SPI接口,這時用的下到線將程序燒寫到單片機中。這時不同的是,單片機的CPU除了執(zhí)行單片機本身的指令之外,還能執(zhí)行對ROM進行操作的特殊指令,如ROM擦除、燒寫和校驗指令。在編程ROM時,下到線先通過傳輸這些指令給CPU執(zhí)行(擦除ROM、讀入數(shù)據(jù)、燒寫ROM、和校驗ROM),這樣完成對單片機的ROM的燒寫。
3、引導(dǎo)程序,即單片機中已經(jīng)存在了一個燒寫程序。啟動單片機時首先運行這程序,程序判斷端口狀態(tài),如果符合“要燒寫ROM”的狀態(tài)存在,就從某個端口(串口、SPI等等)讀取數(shù)據(jù),然后寫入到單片機的ROM中。如果沒有“要燒寫ROM”的狀態(tài),就轉(zhuǎn)到用戶的程序開始執(zhí)行。像AVR單片機的bootloader方式、STC的串口下的方式,還有其他單片機的串口編程等等都是這樣。
搞單片機開發(fā),一定要會C嗎?
匯編語言是一種用文字助記符來表示機器指令的符號語言,是接近機器碼的一種語言。其主要優(yōu)點是占用資源少、程序執(zhí)行效率很高。但是不同的CPU,其匯編語言可能有所差異,所以不易移植。
對于目前普遍使用的RISC架構(gòu)的8bit MCU來說,其內(nèi)部ROM、RAM、STACK等資源都有限,如果使用C語言編寫,一條C語言指令編譯后,會變成很多條機器碼,很容易出現(xiàn)ROM空間不夠、堆棧溢出等問題。而且一些單片機廠家也不一定能提供C編譯器。而匯編語言,一條指令就對應(yīng)一個機器碼,每一步執(zhí)行什么動作都很清楚,并且程序大小和堆棧調(diào)用情況都容易控制,調(diào)試起來也比較方便。所以在資源較少單片機開發(fā)中,我們還是建議采用匯編語言比較好。
而C語言是一種編譯型程序設(shè)計語言,它兼顧了多種語言的特點,并具備匯編語言的功能。C語言有功能豐富的庫函數(shù)、運算速度快、編譯效率很高、有良好的可移植性,而且可以直接實現(xiàn)對系統(tǒng)硬件的控制。C語言是一種結(jié)構(gòu)化程序設(shè)計語言,它支持當(dāng)前程序設(shè)計中廣泛采用的由頂向下結(jié)構(gòu)化程序設(shè)計技術(shù)。此外,C語言程序具有完善的模塊程序結(jié)構(gòu),從而為軟件開發(fā)中采用模塊化程序設(shè)計方法提供了有力的保障。因此,使用C語言進行程序設(shè)計已成為軟件開發(fā)的一個主流。用C語言來編寫目標(biāo)系統(tǒng)軟件,會大大縮短開發(fā)周期,且明顯地增加軟件的可讀性,便于改進和擴充,從而研制出規(guī)模更大、性能更完備的系統(tǒng)。