- ;控制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语句放在延时子程序中的那三个地方都是可以达到效果的,放在主函数中则不行,自己也有些猜想,可是还是不知道具体该怎么正确的解释这种现象,求高手指教,非常感谢!
|