
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