改后代码:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:MOV 54H,#4
MOV A,#07FH
MOV PSW,#80H
S:MOV P0,A
LCALL DELAY
RRC A
RRC A
DJNZ 54H, S
SJMP $
ORG 0100H
DELAY:MOV R0,#10
L:MOV R1,#0FFH
M:MOV R2,#0FAH
DJNZ R2,$
DJNZ R1,M
DJNZ R0,L
RET
END
首先RR是不带循环的右移
而RRC为带CY进位的右移,使用RRC命令,才能使#07FH在
RRC A
RRC A
后变为#0EFH,从而只点亮P0.5
如果使用RR的话,这是就变为#01FH,P0.7,6,5都会亮的。
DJNZ命令是先减后判断,所以54H为#3时连第一次只循环了3次
即只运行了4次RRC命令,所以啊,就停在了P0.3处。改为#4H后
就变好了。
|