在微控制器執行過程中,有時我們需要在一條指令執行後停頓一段時間,再繼續執行下一條指令,例如led燈閃爍;我們可以通過nop指令讓微控制器停頓乙個機械週期,顯然我們需要很多個nop指令才能實ms級延時,這時我們就需要通過迴圈執行nop,控制迴圈次數實現延時,幷包裝成函式,便於隨時呼叫。
;執行2×20×100次nop
delay:
mov r7, #2
delayloop1:
mov r6, #20
delayloop2:
mov r5, #100
delayloop3:
nopdjnz r5, delayloop3
djnz r6, delayloop2
djnz r7, delayloop1
ret
注意:此延時函式沒有進行工作暫存器的入棧出棧操作,或造成ri資料丟失!
keil程式設計+proteus**
org 00h
ajmp start
;main--
----
----
----
----
----
----
-org 40h
start:
mainloop:
clr p1.
0acall delay
setb p1.
0acall delay
ajmp mainloop
;delay--
----
----
----
----
----
----
delay:
mov r7, #2
delayloop1:
mov r6, #20
delayloop2:
mov r5, #100
delayloop3:
nopdjnz r5, delayloop3
djnz r6, delayloop2
djnz r7, delayloop1
retend
51軟體延時函式編寫
51軟體延時函式編寫 void delay uint z z賦值多少,此函式迴圈時間就為多少ms 進入for迴圈時時刻為0.00043294s 然後讓他執行完for迴圈 執行完for迴圈後的時刻為0.00143338s 將數值相減後得到0.00100044s約等於1s 以上延時函式僅適用於晶振頻率為...
51微控制器彙編延時分析
51微控制器彙編延時分析 第一句是定義乙個延時函式標號,並將250傳到r7。第二句是放置乙個標號,並把250放到r6。延時函式 delay mov r7,250 1 d1 mov r6,250 2 d2 djnz r6,d2 3 djnz r7,d1 4 ret 5第一句是定義乙個延時函式標號,並將...
51微控制器延時函式
c程式中可使用不同型別的變數來進行延時設計。經實驗測試,使用unsigned char型別具有比unsigned int更優化的 在使用時應該使用unsigned char作為延時變數。以某晶振為12mhz的微控制器為例,晶振為12mhz即乙個機器週期為1us。一.500ms延時子程式 程式 voi...