📄 cd4060数字钟.txt
字号:
;=====================================================================
;P0口送数,P2口扫描,共阴8个数码管,P1.0和P1。1为按键设定。
;可以显示年月日至时分秒。P0口送数需要加驱动芯片,74LS541要加上拉电阻。
WEI EQU P2 ;位码
WEICON EQU 08H ;位码缓存
DUAN EQU P0 ;段码
GESHU EQU 09H ;显示个数
Y0 EQU 01H ;延时
Y1 EQU 11H
M0 EQU 12H ;计数
M1 EQU 13H
M2 EQU 14H
M3 EQU 15H
MOSHI0 EQU 17H ;模式0
MOSHI1 EQU 18H ;模式1
JS EQU 19H ;记时
JS2 EQU 1AH
JS4 EQU 16H
TINGJI EQU 1CH ;停机5分钟
TIAOL EQU 1DH ;调时差值
TIAOCA EQU 1EH
TIAOCB EQU 1FH
TIAOS EQU 28H
MUOSHI0 EQU 29H
ST0 EQU 2AH
ST1 EQU 2BH
ST2 EQU 2CH
DIS EQU 20H ;显示缓存头地址
SECQ EQU 40H ;秒
MINQ EQU 41H ;分
HOURQ EQU 42H ;小时
DAYQ EQU 43H ;日
MONQ EQU 44H ;月
YEARQ EQU 45H ;年
JIAN BIT 2EH.0 ;键盘标志
JIANY BIT 2EH.1 ;键盘延时标志
JIANCA BIT 2EH.2
JIANCB BIT 2EH.3
TIAOD BIT 2EH.4
MO2 BIT 2EH.5
TS2 BIT 2EH.6
TIAOMAI BIT 2EH.7 ;调点的脉冲
TING BIT 2FH.0 ;停机
;=====================================================================
ORG 0000H
SJMP START
ORG 0003H ;中断入口地址
AJMP BRT0
ORG 000BH
AJMP BRT0
ORG 0030H
START: MOV R0,#02H
MOV R1,#100D
STARTM: MOV @R0,#00H
INC R0
DJNZ R1,STARTM
MOV R0,#00H
MOV SP,#60H
MOV DAYQ,#01H
MOV MONQ,#01H
MOV YEARQ,#01H
MOV WEICON,#11111110B
MOV GESHU,#08H
MOV IE,#82H
SETB EX0
SETB IT0
MOV M0,#2D
MOV M1,#25D
MOV M2,#2D
MOV M3,#4D
MOV ST0,#100D
MOV ST1,#20D
MOV ST2,#02D
MOV JS4,#02H
MOV TINGJI,#05H
MOV 3EH,#25H
;---------------------------------------------------------------------
MAIN: ACALL LED0 ;好
ACALL ZHUAN
ACALL MUOSHI
ACALL JIANP
ACALL STARTJ
DJNZ GESHU,MAIN
MOV GESHU,#08H
SJMP MAIN
;---------------------------------------------------------------------
STARTJ: JNB TING,VVV
DJNZ ST0,VVV
MOV ST0,#100D
DJNZ ST1,VVV
MOV ST1,#40D
DJNZ ST2,VVV
MOV ST2,#02D
CLR TING
MOV MUOSHI0,#00H
MOV TIAOS,#00000000B
VVV: RET
;---------------------------------------------------------------------
MUOSHI: MOV A,MUOSHI0
CJNE A,#00H,Q0
MOV 20H,35H ;时
MOV 21H,34H
MOV 22H,#0BH
MOV 23H,33H ;分
MOV 24H,32H
MOV 25H,#0BH
MOV 26H,31H ;秒
MOV 27H,30H
Q0: CJNE A,#01H,Q1
MOV 20H,3BH ;时
MOV 21H,3AH
MOV 22H,#0CH
MOV 23H,39H ;分
MOV 24H,38H
MOV 25H,#0CH
MOV 26H,37H ;秒
MOV 27H,36H
Q1: RET
;---------------------------------------------------------------------
LED0: MOV WEI,#11111111B ;关端口
MOV A,#1FH ;传送段码数据
ADD A,GESHU
MOV R0,A
MOV A,@R0
ACALL LED1
MOV A,WEICON ;传送位码数据
RR A
MOV WEICON,A
JNB TIAOD,PLL
ORL A,TIAOS
PLL: MOV WEI,A
ACALL DELAY ;延时
RET
;---------------------------------------------------------------------
LED1: ADD A,#03H
MOVC A,@A+PC
MOV DUAN,A
RET
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H,40H,20H
;---------------------------------------------------------------------
DELAY: MOV Y0,#050D
DEL0: MOV Y1,#020D
DEL1: DJNZ Y1,DEL1
DJNZ Y0,DEL0
RET
;---------------------------------------------------------------------
JIANP: JB JIAN,JIAN4
JB JIANY,JIAN2
SETB P1.0
JB P1.0,JIAN0
SETB JIAN
SETB JIANY
SJMP JIAN4
JIAN0: CLR JIANCA
SETB P1.1
JB P1.1,JIAN1
SETB JIAN
SETB JIANY
SJMP JIAN4
JIAN1: CLR JIANCB
JIAN2: CLR JIANY
SETB P1.0
JB P1.0,JIAN3
JB JIANCA,JIAN3
SETB JIANCA
ACALL TIAOA
CLR JIANY
JIAN3: SETB P1.1
JB P1.1,JIAN4
JB JIANCB,JIAN4
SETB JIANCB
ACALL TIAOB
SETB TIAOMAI
CLR JIANY
JIAN4: RET
;--------------------------------------------------------------------
TIAOA: JB MO2,RP5
INC TIAOCA
MOV JS,#00H
MOV JS2,#00H
MOV ST0,#100D
MOV ST1,#40D
MOV ST2,#02D
MOV A,TIAOCA
CJNE A,#01H,RP0
MOV TIAOS,#00000011B
SETB TS2
RP0: CJNE A,#02H,RP1
MOV TIAOS,#00011000B
SETB TS2
RP1: CJNE A,#03H,RP2
MOV TIAOS,#00000011B
SETB TS2
MOV MUOSHI0,#01H
RP2: CJNE A,#04H,RP3
MOV TIAOS,#00011000B
SETB TS2
RP3: CJNE A,#05H,RP4
MOV TIAOS,#11000000B
SETB TS2
RP4: CJNE A,#06H,RP5
MOV TIAOCA,#00H
MOV TIAOS,#00000000B
MOV MUOSHI0,#00H
RP5: RET
;---------------------------------------------------------------------
TIAOB: MOV A,TIAOCA
CJNE A,#01H,RG0
ACALL HOUR
MOV JS2,#00H ;从新规定5S
SJMP QW2
RG0: CJNE A,#02H,RG1
ACALL MINUTE
SETB TING
MOV SECQ,#00H
MOV JS2,#00H
SJMP QW2
RG1: CJNE A,#03H,RG2
ACALL YEAR
MOV JS2,#00H
MOV MUOSHI0,#01H
SJMP QW2
RG2: CJNE A,#04H,RG3
ACALL MONTH
MOV JS2,#00H
SJMP QW2
RG3: CJNE A,#05H,RG4
ACALL DAY
MOV JS2,#00H
SJMP QW2
RG4: CLR TING
INC MUOSHI0
MOV A,MUOSHI0
CJNE A,#01H,QW0
SETB MO2 ;延时5S
SJMP QW2
QW0: CJNE A,#02H,QW2
MOV MUOSHI0,#00H
QW2: MOV ST0,#100D
MOV ST1,#40D
MOV ST2,#02D
RET
;---------------------------------------------------------------------
BRT0: PUSH PSW
PUSH ACC
JNB JIAN,BRT1
DJNZ 3EH,BRT2
CLR JIAN
BRT1: MOV 3EH,#2D
BRT2: DJNZ M0,RE
MOV M0,#4D
JNB TIAOMAI,FSF
DJNZ JS4,FAF
MOV JS4,#02H
CLR TIAOMAI
MOV TIAOL,#00H
CLR JIAN
CLR JIANY
CLR JIANCB
FAF: CLR TIAOD
DJNZ M3,RE
MOV M3,#04D
SJMP FDF
FSF: DJNZ M3,RE
MOV M3,#04D
CPL TIAOD
FDF: DJNZ M2,RE
MOV M2,#2D
JB TING,RE
ACALL SECOND
MOV A,SECQ
CJNE A,#00H,RE
ACALL MINUTE
MOV A,MINQ
CJNE A,#00H,RE
ACALL HOUR
MOV A,HOURQ
CJNE A,#00H,RE
ACALL DAY
CJNE A,#00H,RE
MOV DAYQ,#00H
ACALL MONTH
ACALL YEAR
RE: POP ACC
POP PSW
RETI
;---------------------------------------------------------------------
ZHUAN: MOV R1,#30H ;秒30H,31H
MOV A,SECQ
ACALL ZHUAN0 ;分32H,33H
MOV A,MINQ
ACALL ZHUAN0 ;时34H,35H
MOV A,HOURQ
ACALL ZHUAN0 ;日36H,37H
MOV A,DAYQ
ACALL ZHUAN0 ;月38H,39H
MOV A,MONQ
ACALL ZHUAN0 ;年3AH,3BH
MOV A,YEARQ
ACALL ZHUAN0 ;
RET
;---------------------------------------------------------------------
ZHUAN0: XCHD A,@R1
SWAP A
ANL A,#0FH
INC R1
MOV @R1,A
INC R1
RET
;---------------------------------------------------------------------
SECOND: JNB MO2,FFF
INC JS
MOV A,JS
CJNE A,#05D,FFF
MOV JS,#00H
MOV MUOSHI0,#00H
CLR MO2
FFF: JNB TS2,GGG
INC JS2
MOV A,JS2
CJNE A,#30D,GGG
MOV JS2,#00H
MOV MUOSHI0,#00H
MOV TIAOS,#00000000B
MOV TIAOCA,#00H
CLR TS2
GGG: INC SECQ
CLR AC
CLR C
MOV A,SECQ
DA A
MOV SECQ,A
CJNE A,#60H,RE0
MOV SECQ,#00H
RE0: RET
;---------------------------------------------------------------------
MINUTE: INC TINGJI
MOV A,TINGJI
CJNE A,#05H,TTT
MOV TINGJI,#00H
CLR TING
TTT: INC MINQ
CLR AC
CLR C
MOV A,MINQ
DA A
MOV MINQ,A
CJNE A,#60H,RE1
MOV MINQ,#00H
RE1: RET
;---------------------------------------------------------------------
HOUR: INC HOURQ
CLR AC
CLR C
MOV A,HOURQ
DA A
MOV HOURQ,A
CJNE A,#24H,RE2
MOV HOURQ,#00H
RE2: RET
;---------------------------------------------------------------------
DAY: MOV A,MONQ
ADD A,#17D
MOVC A,@A+PC
MOV R2,A
INC DAYQ
CLR AC
CLR C
MOV A,DAYQ
DA A
MOV DAYQ,A
CJNE A,02H,RE3
MOV DAYQ,#01H
RE3: RET
DB 32H,29H,32H,31H,32H,31H,32H,32H,31H
DB 00H,00H,00H,00H,00H,00H,32H,31H,32H
;---------------------------------------------------------------------
MONTH: INC MONQ
CLR AC
CLR C
MOV A,MONQ
DA A
MOV MONQ,A
CJNE A,#13H,RE4
MOV MONQ,#01H
RE4: RET
;---------------------------------------------------------------------
YEAR: INC YEARQ
CLR AC
CLR C
MOV A,YEARQ
DA A
MOV YEARQ,A
RE5: RET
;---------------------------------------------------------------------
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -