COUNT EQU 31H
ORG 00H
LJMP START
ORG 0BH ;定時器0中斷入口
LJMP INT_T0
START: MOV SECOND,#00H
MOV COUNT,#00H
MOV DPTR,#TABLE ;段碼表首地址
MOV P0,#3FH ;數碼管顯示初始化
MOV P2,#3FH
MOV TMOD,#01H ;設置定時器0工作方式
MOV TH0,#(65536-50000)/256 ;定時50毫秒
MOV TL0,#(65536-50000) MOD 256
SETB TR0 ;啟動定時/計數器0
MOV IE,#82H ;開中斷
LJMP $ ;等待中斷
INT_T0: MOV TH0,#(65536-50000)/256 ;定時50毫秒
MOV TL0,#(65536-50000) MOD 256
INC COUNT ;計數值加1
MOV A,COUNT
CJNE A,#20,I2 ;是否計夠1秒
MOV COUNT,#00H
INC SECOND
MOV A,SECOND
CJNE A,#60,I1 ;是否計夠60秒
MOV SECOND,#00H
I1: MOV A,SECOND
MOV B,#10
DIV AB ;分離計數值十位和個位
MOVC A,@A+DPTR
MOV P0,A
MOV A,B
MOVC A,@A+DPTR
MOV P2,A ;顯示計數值
I2: RETI ;中斷返回
TABLE: DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH
END