導航:首頁 > 編程知識 > 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匯編程序怎麼加循環延時相關的資料

熱點內容
ps3文件分割視頻 瀏覽:280
微信圖片一鍵轉發軟體 瀏覽:331
如何判斷s200plc編程電纜 瀏覽:691
太原編程培訓班哪個好 瀏覽:171
樹葉吹奏教程 瀏覽:6
社交app帶來了哪些社會問題 瀏覽:394
如何安裝愛寶8800數據採集器 瀏覽:712
文件保存了怎麼找不到了 瀏覽:476
彩票網站怎麼辨真假 瀏覽:840
pr找不到該文件 瀏覽:963
java移除panel 瀏覽:354
jsp填充jsp 瀏覽:166
海關外貿大數據在哪裡查 瀏覽:381
思特奇java筆試題 瀏覽:121
葫蘆俠在手機中的文件名 瀏覽:813
plc編程應該怎麼收錢 瀏覽:584
c語言中源文件由什麼組成 瀏覽:890
linuxhttpdphp配置文件 瀏覽:607
拆單數據要怎麼保存 瀏覽:17
mac電腦怎樣壓縮文件到100m 瀏覽:645

友情鏈接