;12M晶振 共阳数码管
STRT EQU P3.0 ;开始
STP EQU P3.1 ;停止
CLRR EQU P3.2 ;复位
SEC EQU P3.5 ;秒调整
MIN EQU P3.6 ;分调整
HOUR EQU P3.7 ;时调整
ORG 00H
SJMP MAIN
ORG 0BH
AJMP T0INT0
ORG 30H
MAIN: MOV SP,#60H
MOV R4,#20
MOV TMOD,#01H
MOV TH0,#03CH ;12M晶振时定时初值取#3CB0H,实验证明用3C09H误差更小
MOV TL0,#0B9H
SETB ET0
SETB EA
kS: LCALL DISP
JB SEC,KM
LCALL DISP
JNB SEC,$-3
AJMP SINC
kM: JB MIN,KH
LCALL DISP
JNB MIN,$-3
AJMP MINC
KH: JB HOUR,K1
LCALL DISP
JNB HOUR,$-3
AJMP HINC
SINC: INC 26H
MOV A,26H
CJNE A,#60,SINC0
MOV 26H,#0
SINC0: AJMP KS
MINC: INC 27H
MOV A,27H
CJNE A,#60,MINC0
MOV 27H,#0
MINC0: AJMP KM
HINC: INC 28H
MOV A,28H
CJNE A,#24,HINC0
MOV 28H,#0
HINC0: AJMP KH
k1: LCALL DISP
JB STRT,K2
LCALL DISP
JNB STRT,$-3
AJMP START
k2: JB STP,K3
LCALL DISP
JNB STP,STOP
K3: JB CLRR,KS
LCALL DISP
JNB CLRR,CLEAR
AJMP KS
START: SETB TR0
AJMP K1
STOP: CLR TR0
AJMP K2
CLEAR: CLR TR0
MOV A,#0
MOV 20H,A
MOV 21H,A
MOV 22H,A
MOV 23H,A
MOV 24H,A
MOV 25H,A
MOV 26H,A
AJMP KS
DISP: MOV A,26H
MOV B,#10
DIV AB
MOV 20H,B ;余数(秒个位数)
MOV 21H,A ;商(秒十位数)
MOV A,27H
MOV B,#10
DIV AB
MOV 22H,B ;余数(分个位数)
MOV 23H,A ;商(分十位数)
MOV A,28H
MOV B,#10
DIV AB
MOV 24H,B ;余数(时个位数)
MOV 25H,A ;商(时十位数)
MOV A,20H ;秒个位
ACALL SEG7
MOV P0,A
SETB P2.0
ACALL DLY
CLR P2.0
MOV A,21H ;秒十位
ACALL SEG7
MOV P0,A
SETB P2.1
ACALL DLY
CLR P2.1
MOV A,#0BFH ; -
MOV P0,A
SETB P2.2
ACALL DLY
CLR P2.2
MOV A,22H ;分个位
ACALL SEG7
MOV P0,A
SETB P2.3
ACALL DLY
CLR P2.3
MOV A,23H ;分十位
ACALL SEG7
MOV P0,A
SETB P2.4
ACALL DLY
CLR P2.4
MOV A,#0BFH ; -
MOV P0,A
SETB P2.5
ACALL DLY
CLR P2.5
MOV A,24H ;时个位
ACALL SEG7
MOV P0,A
SETB P2.6
ACALL DLY
CLR P2.6
MOV A,25H ;时十位
ACALL SEG7
MOV P0,A
SETB P2.7
ACALL DLY
CLR P2.7
RET
T0INT0: MOV TH0,#03CH;#9EH ;定时中断子程序。重装定时常数
MOV TL0,#0B9H;#58H
DJNZ R4,T0INTR ;50msX20=1S,未满20次,跳出中断子程序
MOV R4,#20
INC 26H
MOV A,26H
CJNE A,#60,T0INTR
MOV 26H,#0
INC 27H
MOV A,27H
CJNE A,#60,T0INTR
MOV 27H,#0
INC 28H
MOV A,28H
CJNE A,#24,T0INTR
MOV 28H,#0
AJMP T0INTR
T0INTR: RETI
DLY10: MOV R3,#30
D0: ACALL DLY
DJNZ R3,D0
RET
DLY: MOV R7,#2
D1: MOV R6,#40
DJNZ R6,$
DJNZ R7,D1
RET
SEG7: INC A
MOVC A,@A+PC
RET
DB 0C0H ;0 共阳
DB 0F9H ;1
DB 0A4H ;2
DB 0B0H ;3
DB 099H ;4
DB 092H ;5
DB 082H ;6
DB 0F8H ;7
DB 080H ;8
DB 090H ;9
END