51彙編(五) 延時函式

2021-10-05 16:54:53 字數 1082 閱讀 5352

在微控制器執行過程中,有時我們需要在一條指令執行後停頓一段時間,再繼續執行下一條指令,例如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...