;控制LED1与LED2间隔500ms交替发光,当按下K1并不松开时,变为间隔200ms交替发光,松开则回到原来的频率
ORG 00H
START:
MOV P1,0FFH
;JNB P1.0,FLASH
CLR P0.0
SETB P0.1
CALL DELAY1
SETB P0.0
CLR P0.1
CALL DELAY1
JMP START
FLASH:
CLR P0.0
SETB P0.1
CALL DELAY2
SETB P0.0
CLR P0.1
CALL DELAY2
;延时子函数1,延时500ms
DELAY1:
;JNB P1.0,FLASH
MOV R1,#50
D1:
;JNB P1.0,FLASH
MOV R2,#20
D2: MOV R3,#248
JNB P1.0,FLASH
DJNZ R3,$
DJNZ R2,D2
DJNZ R1,D1
RET
;延时子函数2,延时200ms
DELAY2:
MOV R1,#20
D3: MOV R2,#20
D4: MOV R3,#248
DJNZ R3,$
DJNZ R2,D4
DJNZ R1,D3
RET
END
将JNB P1.0,FLASH语句放在延时子程序中的那三个地方都是可以达到效果的,放在主函数中则不行,自己也有些猜想,可是还是不知道具体该怎么正确的解释这种现象,求高手指教,非常感谢! |