程序中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 |