導航:首頁 > 編程知識 > 51匯編程序怎麼加循環延時

51匯編程序怎麼加循環延時

發布時間:2024-10-16 20:31:21

❶ 求做個匯編編程,用雙層循環實現100ms的延時

設主頻12MHz的51單片機,編一個100ms二重循環的延時程序如下,供參考。其它匯編可以類似編程。
SSSS:MOV R0,#99;本指令是單周期指令,用時1us
KKKK0:DJNZ R0,KKKKK;2us
MOV R1,#125;1us
LLLL0:DJNZ R1,LLLLL;2us
NOP;1us
NOP;1us
NOP;1us
NOP;1us
LLLLL:SJMP LLLL0;2us
NOP;1us
NOP;1us
NOP;1us
NOP;1us
NOP;1us
KKKKK:SJMP KKKK0;2us
NOP;1us
NOP;1us
NOP;1us
NOP;1us
NOP;1us
RET;2us
這段程序延時時間是
1+99*[2+1+125*(2+1+1+1+1+2)+1+1+1+1+1+2]+1+1+1+1+2=100000us=100ms
可以適當調整循環常數99、125以求減小NOP(空操作指令),使程序更加精練。
dshxxf程序不錯,但延時時間是50301us,計算如下1+100*(1+2*250+3)

❷ 51單片機延時函數的問題。晶振是12MHz..需要延時1秒

很簡單,for循環也是需要時間的.

當你使用模擬的時候,通常可以在編譯器裡面查看這段代碼的匯編指令.

你可以看書它的用到了多少個匯編指令,然後在你的晶元手冊上查詢,每一個匯編指令執行需要多少個最小指令周期.最小指令周期才是你說的1um,全部加起來,你就知道你這句話用掉了多少個最小指令.

很明顯遠遠超過了1個最小指令.9秒的的誤差算少的了...

所以說,假如你要做1s的延遲,最好使用內部時鍾中斷來做,直接在程序內部delay延時的話,佔用系統資源還算不準...

具體解釋下上圖,為了拿這5分還真不容易...

首先,進入函數就需要5個匯編指令,這些指令主要是入棧,備份指針的操作,不同的編譯器指令不同,但都差不多....當然這5個指令是進入函數只跑一次,佔用時間不多,消耗時間最多的是你for循環內部的指令,一個for循環需要8條匯編指令才能實現,而每個匯編指令通常都需要消耗1-2個最小指令循環,具體那個指令消耗幾個循環我懶的查手冊,不同的晶元不一樣,你自己看看你用的晶元手冊把....

以上...應該清楚了把..不明白追問,我要是再次無聊的話,會修改回答.

❸ 51單片機用匯編語言設計1S延時子程序,晶振為12MHz。 (麻煩附上詳細計算過程以及詳細說明,

DELAY1S:
MOV R2,#10 ;1
DELAY1:
MOV R3,#200 ;1*10
DELAY2:
MOV R4,#249 ;1*199*20
DJNZ R4,$ ;2*249*199*10
DJNZ R3,DELAY2 ;2*199*10
DJNZ R2,DELAY1 ;2*10
MOV R2,#250 ;1
DJNZ R2,$ ;2*250
MOV R2,#243 ;1
DJNZ R2,$ ;2*243
RET ;2
以上注釋值之和就是延時總時間:T=1000001US約1S

閱讀全文

與51匯編程序怎麼加循環延時相關的資料

熱點內容
什麼格式的配置文件比較主流 瀏覽:984
增加目錄word 瀏覽:5
提取不相鄰兩列數據如何做圖表 瀏覽:45
r9s支持的網路制式 瀏覽:633
什麼是提交事務的編程 瀏覽:237
win10打字卡住 瀏覽:774
linux普通用戶關機 瀏覽:114
文件夾的相片如何列印出來 瀏覽:84
mpg文件如何刻錄dvd 瀏覽:801
win10edge注冊表 瀏覽:309
cad圖形如何復制到另一個文件中 瀏覽:775
sim文件在手機上用什麼打開 瀏覽:183
ubunturoot文件夾 瀏覽:745
手機文件誤刪能否恢復數據 瀏覽:955
照片文件名中的數字代表什麼 瀏覽:44
cs6裁切工具 瀏覽:235
資料庫超過多少數據會卡 瀏覽:858
CAD落圖文件 瀏覽:125
怎樣翻譯文件內容 瀏覽:679
戴爾r910安裝linux 瀏覽:69

友情鏈接