
11 04 17 E:\DPJ\OTHER\LED閃爍\LED.ASM
;P1.0 P1.1接2LED,P2.0接一按鍵。上電,2LED不亮,按第1 次鍵2LED同時以1S周期閃爍,按第2 次
;2LED輪流1S閃爍...同此循環。
;LED閃爍程序本不用這么寫,但本程序的思路可作為單按鍵多功能(較復雜功能)選擇時參考。
ORG 00H
AJMP MAIN
ORG 0BH
AJMP T0INT
ORG 30H
MAIN:
MOV TMOD,#01H ;定時器0工作方式1
MOV TH0,#3CH ;50ms中斷
MOV TL0,#0B0H
SETB EA
SETB ET0
MOV R0,#10 ;500ms
KEY:
ACALL DISP ;這里作防抖用,一般取10ms 。實物時,可在DISP子程序中多次調用,得到10ms延時
JB P2.0,$-2
ACALL DISP
JNB P2.0,$-2
SETB TR0
INC R1 ;R1為按鍵按下次數
CJNE R1,#2,KEY0
AJMP KEY
KEY0:
MOV R1,#1
AJMP KEY
DISP:
CJNE R1,#1,DISP0
AJMP DISP1
DISP0:
CJNE R1,#2,RT
AJMP DISP2
DISP1: ;一起閃
JNB F0,DISP11 ;F0為0.5S到標志,每0.5S求反一次
SETB P1.0
SETB P1.1
RET
DISP11:
CLR P1.0
CLR P1.1
RT:
RET
DISP2: ;交替閃
JNB F0,DISP21 ;F0為0.5S到標志,每0.5S求反一次
SETB P1.0
CLR P1.1
RET
DISP21:
CLR P1.0
SETB P1.1
RET
T0INT:
MOV TH0,#3CH
MOV TL0,#0B0H
DJNZ R0,RTI
MOV R0,#10
CPL F0
RTI:
RETI
END