程序中NOP都起延時作用,但是延時時間很短,下面一段子程序延時時間較長,R7和R6裝載數據越大延時時間越長。哪里需要延時,將此子程序在哪里調用即可。具體延時時間計算和延時原理見課本。
......
delay: ;延時子程序
MOV R7,#30H ;設置R7=20H
L1: MOV R6,#0FFH ;設置R6=FFH
DJNZ R6,$ ;若R6-1≠0,執行本指令循環,若R6-1=0,執行下一指令
DJNZ R7,L1 ;若R7-1≠0,執行L2循環,若R7-1=0,執行下一指令
RET
......
如所列舉程序中一段程序。
START1:
NOP
NOP
MOV AL,0 ;從PA端口讀入開關狀態
MOV DX,IOA
IN AL,DX
NOP
NOP
MOV DX,IOB ;從PB端口輸出,控制LED亮滅
OUT DX,AL
如果延時時間很長,將兩個NOP刪除,換上ACALL delay 如:
START1:
ACALL delay
MOV AL,0 ;從PA端口讀入開關狀態
MOV DX,IOA
IN AL,DX
ACALL delay
MOV DX,IOB ;從PB端口輸出,控制LED亮滅
OUT DX,AL |