ORG 0000H
LJMP START
ORG 0003H ; 外部中断1
LJMP INT
ORG 100H
START:
mov TMOD ,#10H ; 定时器1模式1
SETB TR1 ; 启动定时器1
MOV A,#0FEH
SETB IT0 ; 外部中断0下降沿触发
SETB EX0 ; 外部中断0允许
SETB EA ; 开总允许
MOV R4,#25
LOOP:
MOV TL1,#0E0H
MOV TH1,#0B1H ; 定时器赋初值,定时20毫秒
JNB TF1,$ ; 查询式,T1没有溢出就等待
CLR TF1
DJNZ R4,LOOP ;25个20毫秒的中断后,即0.5秒后点亮下一个灯 RR A
MOV P1,A
MOV R4,#25
SJMP LOOP
INT: ; 中断程序,
PUSH ACC ; 累加器A 入栈
CLR TR1
MOV A,#0ADH ; 灯全亮
MOV P1,A
LCALL DELAY1S
MOV A,#0DAH ; 灯全亮
MOV P1,A
LCALL DELAY1S
MOV A,#0ADH ; 灯全亮
MOV P1,A
LCALL DELAY1S
POP ACC ; 累加器A 出栈
MOV P1,A
SETB TR1
RETI
DELAY1S:MOV R1,#100
DELAY:MOV R2,#100
DEL1: MOV R3,#100
DEL2: DJNZ R3,DEL2
DJNZ R2,DEL1
DJNZ R1,DELAY RET END
ORG 0000H
LJMP START
ORG 0003H ; 外部中断1
LJMP INT
ORG 100H
START:
mov TMOD ,#10H ; 定时器1模式1
SETB TR1 ; 启动定时器1
MOV A,#0FEH
SETB IT0 ; 外部中断0下降沿触发
SETB EX0 ; 外部中断0允许
SETB EA ; 开总允许
MOV R4,#25
LOOP:
MOV TL1,#0E0H
MOV TH1,#0B1H ; 定时器赋初值,定时20毫秒
JNB TF1,$ ; 查询式,T1没有溢出就等待
CLR TF1
DJNZ R4,LOOP ;25个20毫秒的中断后,即0.5秒后点亮下一个灯 RR A
MOV P1,A
MOV R4,#25
SJMP LOOP
INT: ; 中断程序,
PUSH ACC ; 累加器A 入栈
CLR TR1
MOV A,#0ADH ; 灯全亮
MOV P1,A
LCALL DELAY1S
MOV A,#0DAH ; 灯全亮
MOV P1,A
LCALL DELAY1S
MOV A,#0ADH ; 灯全亮
MOV P1,A
LCALL DELAY1S
POP ACC ; 累加器A 出栈
MOV P1,A
SETB TR1
RETI
DELAY1S:MOV R1,#100
DELAY:MOV R2,#100
DEL1: MOV R3,#100
DEL2: DJNZ R3,DEL2
DJNZ R2,DEL1
DJNZ R1,DELAY RET END