ORG 0000H
LJMP START
ORG 001BH ;定时器/计数器1中断程序入口地址
LJMP INT
ORG 0100H
START: MOV TMOD,#10H ;计数器置为方式1
MOV TL1,#0B0H ;装入时间常数
MOV TH1,#03CH
SETB ET1 ;允许定时器T1中断
SETB EA ;允许总中断
SETB TR1 ;开始计数
MOV R0,#05H ;05是进入中断的次数LOOP: MOV R1,#00H
MOV R2,#26H ;灯的状态循环次数LOOP1: MOV A,R1
ACALL TABLE
MOV P1,A
INC R1
LOOP2: CJNE R0,#00H,LOOP2
MOV R0,#05H
DJNZ R2,LOOP1
LJMP LOOP
TABLE: INC A ;从表中取显示码入累加器
MOVC A,@A+PC
RET
DB 0FFH,0FEH,0FCH,0F8H,0F0H,0E0H,0C0H,80H,0H
DB 01H,03H,07H,0FH,1FH,3FH,7FH,0FFH,00H,0FFH,0FEH DB 0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH,0BFH,0DFH DB 0EFH,0F7H,0FBH,0FDH,0FEH,0FFH,00H,0FFH,00H INT: CLR TR1 ;停止计数
DEC R0 ;计数值减一
MOV TL1,#0B0H ;重置时间常数初值
MOV TH1,#03CH
SETB TR1 ;开始计数
RETI ;中断返回
END
将T1改为T0,并且溢出间隔为0.05s
ORG 0000H
LJMP START
ORG 001BH ;定时器/计数器1中断程序入口地址
LJMP INT
ORG 0100H
START: MOV TMOD,#01H ;计数器置为方式1
MOV TL1,#78H ;装入时间常数
MOV TH1,#0CH
SETB ET0 ;允许定时器T1中断
SETB EA ;允许总中断
SETB TR0 ;开始计数
MOV R0,#05H ;05是进入中断的次数
LOOP: MOV R1,#00H
MOV R2,#25H ;灯的状态循环次数
LOOP1: MOV A,R1
ACALL TABLE
MOV P1,A
INC R1
LOOP2: CJNE R0,#00H,LOOP2
MOV R0,#05H
DJNZ R2,LOOP1
LJMP LOOP
TABLE: INC A ;从表中取显示码入累加器
MOVC A,@A+PC
RET
DB 0FFH,07FH,3FH,1FH,0FH,07H,03H,01H,00H
DB 80H,81H,0C1H,0C3H,0E3H,0E7H,0F7H,0FFH
DB 00H,0FFH,00H,0FFH,0EFH,0E7H,0C7H,0C3H,83H,81H,01H,00H DB 01H,03H,07H,0FH,1FH,3FH,7FH,0FFH
INT: CLR TR1 ;停止计数
DEC R0 ;计数值减一
MOV TL1,#78H ;重置时间常数初值
MOV TH1,#0CH
SETB TR1 ;开始计数
RETI ;中断返回
END。