
單片機匯編編程300例,單片機應(yīng)用實例20個

老鐵們,大家好,相信還有很多朋友對于單片機匯編編程300例和單片機應(yīng)用實例20個的相關(guān)問題不太懂,沒關(guān)系,今天就由我來為大家分享分享單片機匯編編程300例以及單片機應(yīng)用...
老鐵們,大家好,相信還有很多朋友對于單片機匯編編程300例和單片機應(yīng)用實例20個的相關(guān)問題不太懂,沒關(guān)系,今天就由我來為大家分享分享單片機匯編編程300例以及單片機應(yīng)用實例20個的問題,文章篇幅可能偏長,希望可以幫助到大家,下面一起來看看吧!
匯編程序如何燒寫到單片機里
匯編語言燒到單片機的過程(不同系列的單片機有所不同)匯編程序--->匯編語言編譯器--->單片機燒寫器--->單片機編寫軟件軟件+硬件單片機
單片機用C語言編程很好學(xué),為什么還要用匯編呢
C語言是發(fā)展趨勢,匯編可以幫助學(xué)生熟悉單片機內(nèi)部結(jié)構(gòu)。
首先匯編語言和C語言都是編程語言,匯編是一種機器語言直接面對底層,與單片機底層硬件構(gòu)架息息相關(guān),相對于C語言,是一門低級語言,C語言面向過程的語言,在編譯執(zhí)行會轉(zhuǎn)為匯編在生成單片機可執(zhí)行文件。是一門高級語言,兩種語言各有優(yōu)缺點。
一,C語言/匯編優(yōu)缺點。1學(xué)習(xí)難度。
匯編因為的理解難度和開發(fā)難度比C語言大,所以學(xué)習(xí)難度大,都是對寄存器操作,學(xué)習(xí)匯編就要學(xué)習(xí)這個單片機的硬件結(jié)構(gòu)和基本組成、存儲器訪問方式、單片機I/O操作時序、定時計數(shù)器、中斷處理、指令系統(tǒng)、尋址方式等知識點;而且每個系列芯片的內(nèi)部寄存地址和寄存器都有差異,維護起來也十分困難。
2執(zhí)行效率
匯編實時性比C語言好,占用單片機資源少,生成的執(zhí)行文件更小,匯編語言程序直接被轉(zhuǎn)換成機器指令。而C語言編譯過程會先形成匯編,在轉(zhuǎn)為機器語言。
3移植性
C語言比匯編移植性好,程序可讀性比匯編要強。實現(xiàn)相同功能,C語言的代碼數(shù)量會比較短,對于匯編來說,每一種單片機匯編語言都不一樣。所以移植性差。
C語言通過結(jié)構(gòu)體,指針映射寄存器地址,當(dāng)有需要時候,只需要簡單更改寄存器地址,或者更改寄存器定義,即可滿足程序和工程的移植。
4,調(diào)試
C語言調(diào)試方便,例如STM32開發(fā)過程中,可以使用jlink通過SWD進行在線仿真,調(diào)試各語法,語句執(zhí)行情況,還可以查看各變量值的變化,很容易就能定位到BUG問題。而匯編調(diào)試?yán)щy,很多時候難以很快定位問題。
二,單片機開發(fā)不一定都能用C語言單片機在上個世紀(jì)七十年代開始出現(xiàn),早期都使用匯編語言進行開發(fā),隨著技術(shù)的發(fā)展進步,制程工藝快速提升,單片機的處理速度越來越快,很多單片機的開發(fā)環(huán)境都使用C語言編譯,生產(chǎn)二進制文件。
但因產(chǎn)品BOM成本要求,很多的低端單片機還是OTP一次性燒錄,程序空間小,許多的型號,還是在用匯編進行開發(fā),如義隆,松翰等。
三,學(xué)習(xí)匯編并不是無用1,大學(xué)時學(xué)習(xí)匯編,有助于理解單片機系統(tǒng)構(gòu)架,指令集,和寄存器尋址等知識點,也促進對于C語言的指針的用法。
2,目前的linux開發(fā)的部分底層bootload文件,或stm32的.s啟動文件就是使用匯編語言的文件,都使用匯編進行底層引導(dǎo)。修改堆棧,或者程序起始運行的位置,都需要在對應(yīng)文件中修改。或者學(xué)習(xí)UCOS也會涉及修改啟動文件內(nèi)相關(guān)數(shù)據(jù)。
四單片機發(fā)展趨勢:C語言當(dāng)前設(shè)備半導(dǎo)體的成本,隨著制程工藝的提升而降低,越來越多的低端8位單片機開始從匯編轉(zhuǎn)向到C語言,單片機也往更高集成度,更強大功能發(fā)展。
所以學(xué)習(xí)單片機不一定要精通匯編,但對匯編有一定了解,對學(xué)習(xí)單片機有幫助,只有在某一些功能需求時,可以適當(dāng)運用匯編。
單片機求匯編語言設(shè)計一個彩燈控制系統(tǒng),有4個控制開關(guān),8盞LED燈
1、程序?qū)崿F(xiàn)上應(yīng)該不難,假設(shè)用3個8位變量來調(diào)節(jié)這三個燈,理想上可以得到256單色灰度效果。但通常能做到16等級灰度,也能看到一定效果。
2、這三個PWM周期相同,占空比不同,亮度就各有不同。
3、確保單片機管腳輸出1時(100%,或單獨調(diào)節(jié)滿刻度),三個LED燈的驅(qū)動電流均達到飽和。并且合成色為白色。且根據(jù)最佳觀測距離,選擇相應(yīng)視角的燈管。并考慮其安裝位置。
4、若為256等級灰度,總共有2^24個組合漸變。且漸變過程還有更多組合。建議16等級實現(xiàn)先。
5、三個for循環(huán),逐個調(diào)節(jié)PWMR、PWMG、PWMB參量。在定時器的最小定時管理單元中逐個判斷,是否達到翻轉(zhuǎn)調(diào)節(jié)。并控制各LED的亮滅。【以上純屬理論分析,程序及效果自行完成】
8051單片機用匯編程序讓八個LED燈每隔一秒亮一個,輪流亮(加說明啊,謝謝了)
設(shè)個定時器。然后一個端口,賦值1(高電平亮),如果低電平就賦值11111110b然后每隔一秒給它做個移位。不就完了。
單片機三大編程語言
單片機主流編程語言包括:匯編語言、C51、Python語言。
早期使用匯編語言比較多,現(xiàn)在最流行的C51,近幾年開始出現(xiàn)使用Python語言。每種語言各有各的優(yōu)點。
51單片機匯編語言倒計時60秒循環(huán)程序
可以在SJMP$這里改成判斷R2是不是為0,如是就重新載入60…如果不是就跳回重新判斷R2
關(guān)于單片機匯編編程300例,單片機應(yīng)用實例20個的介紹到此結(jié)束,希望對大家有所幫助。
本文鏈接:http://www.wzyaohuidianqi.cn/ke/2128.html
