ORG 000BH ;定时器0中断入口
INT_TO:
PUSH ACC
PUSH PSW
CLR TF0 ;清定时0中断标志
MOV TH0,#0F6H ;2MS
MOV TL0,#03DH
MOV A,#11110000B ;关数码管
ORL P2,A
MOV A,LedT0
CJNE A,#0,INT_T0_1
MOV A,LED1
MOVC A,@A+DPTR
MOV P3,A
CLR P2.7
MOV LedT0,#1
LJMP INT_T0_END
INT_T0_1:
MOV A,LedT0
CJNE A,#1,INT_T0_2
MOV A,LED2
MOVC A,@A+DPTR
MOV P3,A
CLR P2.6
MOV LedT0,#2
LJMP INT_T0_END
INT_T0_2:
MOV A,LedT0
CJNE A,#2,INT_T0_3
MOV A,LED3
MOVC A,@A+DPTR
MOV P3,A
CLR P2.5
MOV LedT0,#3
LJMP INT_T0_END
INT_T0_3:
MOV A,LED4
MOVC A,@A+DPTR
MOV P3,A
CLR P2.4
MOV LedT0,#0
LJMP INT_T0_END
INT_T0_END:
POP PSW
POP ACC
RETI
START:
MOV SP,#60H
MOV TMOD,#01H ;设定T0为十六位定时模式。
MOV TH0,#0F6H ;2MS
MOV TL0,#03DH
SETB TR0 ;开定时器0
SETB ET0 ;开定时0中断
CLR TF0 ;清定时0中断标志
SETB EA ;开总中断
MOV LedT0,#00H
MOV DPTR,#TABLE
MAIN:
MOV LED1,#0
MOV LED2,#1
MOV LED3,#2
MOV LED4,#3
SCAN:
LJMP SCAN
TABLE:
DB 10111111B ;0
DB 10000110B ;1
DB 11011011B ;2
DB 11001111B ;3
DB 11100110B ;4
DB 11101101B ;5
DB 11111101B ;6
DB 10000111B ;7
DB 11111111B ;8
DB 11101111B ;9
DB 11110111B ;A
DB 11111111B ;b
DB 10111001B ;C
DB 10111111B ;d
DB 11111001B ;E
DB 11110001B ;F
DB 11000000B ;-
DB 10000000B ;
END