📄 clock.txt
字号:
AX EQU 20H
AL EQU 20H
AH EQU 21H
BX EQU 22H
BL EQU 22H
BH EQU 23H
CX EQU 24H
CL EQU 24H
CH EQU 25H
DX EQU 26H
DL EQU 26H
DH EQU 27H
EX EQU 28H
EL EQU 28H
EH EQU 29H
BBH EQU 90H
T_1 EQU 30H ;秒
T_2 EQU 31H ;分
T_3 EQU 32H ;时
T_4 EQU 34H ;日
T_5 EQU 35H ;月
T_6 EQU 36H ;年
TEMP1 EQU 37H ;显示缓存
TEMP2 EQU 38H
TEMP3 EQU 39H
TEMP4 EQU 3AH
TEMP5 EQU 3BH
TEMP6 EQU 3CH
TN EQU 3DH ;次数
R_1 EQU 50H ;日期时间缓存
R_2 EQU 51H
R_3 EQU 52H
R_4 EQU 53H
R_5 EQU 54H
R_6 EQU 55H
QQ EQU 56H
F_1 EQU 58H ;(显/置)
F_2 EQU 59H ;时间/日期
F_3 EQU 5AH ;设置秒分时日月年
F_4 EQU 5BH ;读数标记
F_5 EQU 5CH ;设置加1标记
F_6 EQU 70H ;字延时次数
K1N EQU 64H
K1P EQU 65H
K1S EQU 66H
K2N EQU 67H
K2P EQU 68H
K2S EQU 69H
K11N EQU 6AH
K11P EQU 6BH
K11S EQU 6CH
K22N EQU 6DH
K22P EQU 6EH
K22S EQU 6FH
BUF EQU 90H
JX EQU 92H
K EQU 93H
N EQU 96H
WT EQU 9AH
ORG 2000H
DCW T1_INT
ORG 2080H
MAIN: LD SP,#00FFH
DI
CLRB INT_PEND
LDB IOC1,#54H
LDB INT_MASK,#01H
LDB F_1,#0
LDB F_2,#0
LDB F_4,#0
ORB P2,#0C0H
NOP
NOP
NOP
LCALL STT ;对8025进行初始化
LDB BUF,#0E0H
LCALL WRITEACK
LDB BUF,#20H
LCALL SPP
LCALL STT
LDB BUF,#0F0H
LCALL WRITEACK
LDB BUF,#20H
LCALL SPP
LDB T_6,#6
LCALL WRITEYEAR
LDB T_5,#1
LCALL WRITEMONTH
LDB T_4,#17H
LCALL WRITEDAY
LDB T_3,#8
LCALL WRITEHOUR
LDB T_2,#0
LCALL WRITEMINUTE
LDB T_1,#0
LCALL WRITESECOND
EI
MAIN1: LCALL SUB_K2
JBS F_1,0,EDITING1
LCALL DISP
CMPB F_4,#01H
JNE MAIN1
READDATA:
LCALL START1
LDB BUF,#64H
LCALL WRITEACK
LDB BUF,#00H
LCALL WRITEACK
LCALL START1
LDB BUF,#65H
LCALL WRITEACK
LDB N,#6
LD WT,#0030H
LOOP:
LCALL READACK
STB BUF,[WT]+
DJNZ N,LOOP
LCALL READ
STB BUF,[WT]
LCALL STOP
ANDB 30H,#7FH
ANDB 31H,#7FH
ANDB 32H,#3FH
ANDB 34H,#3FH
ANDB 35H,#1FH
CLRB F_4
SJMP MAIN1
EDITING1: LJMP EDITING
DISP: ;时间/日期显示程序
LCALL SUB_K1
JBS F_2,0,DISP1
LD CX,#T_3
LCALL DISP2
RET
DISP1: LD CX,#T_6
LCALL DISP2
RET
DISP2: LDB BL,#03H
LD DX,#TEMP1
DISP3: LDB AL,[CX]
LDB AH,AL
SHRB AL,#4
ANDB AH,#0FH
STB AL,[DX]+
STB AH,[DX]+
DEC CX
DJNZ BL,DISP3
LCALL FDISP
RET
FDISP: LDB BH,#6
LD CX,#TEMP1
FDISP2:LDB AL,[CX]
CLRB AH
LDB BL,TAB[AX]
STB BL,[CX]+
DJNZ BH,FDISP2
LDB DL,#6
LDB AX,#TEMP1
LDB BL,#0H
DDISP: LCALL ClRDISP
LDB P1,[AX]+
LDB HSO_COMMAND,BL
ADD HSO_TIME,T1,#3
NOP
NOP
LCALL DELAY
INCB BL
DJNZ DL,DDISP
LCALL CLRDISP
RET
CLRDISP:
LDB HSO_COMMAND,#2CH
ADD HSO_TIME,T1,#3
NOP
NOP
RET
DELAY: LD F_6,#500
DEL: DEC F_6
JNE DEL
RET
TAB: DCB 3FH,06H,5BH,4FH,66H,
DCB 6DH,7DH,07H,7FH,6FH,
DCB 00H,40H,71H,76H,79H
EDITING:
LDB R_1,T_1
LDB R_2,T_2
LDB R_3,T_3
LDB R_4,T_4
LDB R_5,T_5
LDB R_6,T_6
LDB BH,#6
LD QQ,#0050H
BB: LDB AL,[QQ]
LDB BL,AL
SHRB AL,#4
MULB AL,#10
ANDB BL,#0FH
ADDB AL,BL
STB AL,[QQ]+
DJNZ BH,BB
LD F_3,#01H
EDIT:
LCALL SUB_K11
JBS F_3,6,EDIT7
JBS F_3,0,EDIT6
JBS F_3,1,EDIT5
JBS F_3,2,EDIT4_0
JBS F_3,3,EDIT3_0
JBS F_3,4,EDIT2_0
JBS F_3,5,EDIT1_0
EDIT1_0: LJMP EDIT1
EDIT2_0: LJMP EDIT2
EDIT3_0: LJMP EDIT3
EDIT4_0: LJMP EDIT4
EDIT7: LDB BH,#6
LD QQ,#0050H
AA:
LDB AL,[QQ]
CLRB AH
DIVB AX,#10
SHLB AL,#4
ORB AL,AH
STB AL,[QQ]+
DJNZ BH,AA
LDB T_6,R_6
LCALL WRITEYEAR
LDB T_5,R_5
LCALL WRITEMONTH
LDB T_4,R_4
LCALL WRITEDAY
LDB T_3,R_3
LCALL WRITEHOUR
LDB T_2,R_2
LCALL WRITEMINUTE
LDB T_1,R_1
LCALL WRITESECOND
CLRB F_1
CLRB F_2
LJMP MAIN1
EDIT6:
LDB F_5,R_6
LCALL SUB_K22
LDB R_6,F_5
CMPB R_6,#100
JNC EGO6
CLRB R_6
EGO6:
LDB AL,R_6
LDB BL,#06H
LCALL EDITS
LJMP EDIT
EDIT5:
LDB F_5,R_5
LCALL SUB_K22
LDB R_5,F_5
CMPB R_5,#13
JNC EGO5
LDB R_5,#1
EGO5:
LDB AL,R_5
LDB BL,#05H
LCALL EDITS
LJMP EDIT
EDIT4:
LDB F_5,R_4
LCALL SUB_K22
LDB R_4,F_5
LDBZE 5EH,R_6
DIVUB 5EH,#04
CMPB 5FH,#00H
JNE K3
K2:
CMPB R_5,#02
JNE K3
CMPB R_4,#30
SJMP K4
K3:
LDBZE EX,R_5
LDB BBH,MAX[EX]
CMPB R_4,BBH
K4:
JNC EGO4
LDB R_4,#1
EGO4:
LDB AL,R_4
LDB BL,#04H
LCALL EDITS
LJMP EDIT
EDIT3:
LDB F_5,R_3
LCALL SUB_K22
LDB R_3,F_5
CMPB R_3,#24
JNC EGO3
CLRB R_3
EGO3:
LDB AL,R_3
LDB BL,#03H
LCALL EDITS
LJMP EDIT
EDIT2:
LDB F_5,R_2
LCALL SUB_K22
LDB R_2,F_5
CMPB R_2,#60
JNC EGO2
CLRB R_2
EGO2:
LDB AL,R_2
LDB BL,#02H
LCALL EDITS
LJMP EDIT
EDIT1:
LDB F_5,R_1
LCALL SUB_K22
LDB R_1,F_5
CMPB R_1,#60
JNC EGO1
CLRB R_1
EGO1:
LDB AL,R_1
LDB BL,#01H
LCALL EDITS
LJMP EDIT
MAX:
DCB 00,32,29,32,31,32
DCB 31,32,32,31,32,31,32
EDITS:
CLRB AH
DIVUB AX,#10
LDB TEMP5,AL
LDB TEMP6,AH
LDB TEMP4,#0BH
LDB TEMP3,BL
LDB TEMP2,#0AH
LDB TEMP1,#0AH
LCALL FDISP
RET
SUB_K2:
LDB K2P,P0
JBS K2P,0,K2OUT1
JBS K2S,2,K2OUT2
INCB K2N
CMPB K2N,#5
JNC K2OUT2
LDB F_1,#0FFH
LDB K2S,#0FFH
LDB K11S,#0FFH
CLRB K2N
RET
K2OUT1:
CLRB K2S
CLRB K2N
K2OUT2:
RET
SUB_K1:
LDB K1P,P0
JBS K1P,1,K1OUT1
JBS K1S,2,K1OUT2
INCB K1N
CMPB K1N,#5
JNC K1OUT2
NOTB F_2
LDB K1S,#0FFH
CLRB K1N
RET
K1OUT1:
CLRB K1S
CLRB K1N
K1OUT2:
RET
SUB_K22:
LDB K22P,P0
JBS K22P,1,K22OUT1
JBS K22S,2,K22OUT2
INCB K22N
CMPB K22N,#5
JNC K22OUT2
INCB F_5
LDB K22S,#0FFH
CLRB K22N
RET
K22OUT1:
CLRB K22S
CLRB K22N
K22OUT2:
RET
SUB_K11:
LDB K11P,P0
JBS K11P,0,K11OUT1
JBS K11S,2,K11OUT2
INCB K11N
CMPB K11N,#5
JNC K11OUT2
SHLB F_3,#1
LDB K11S,#0FFH
LDB K22S,#0FFH
LDB K1S,#0FFH
CLRB K11N
RET
K11OUT1:
CLRB K11S
CLRB K11N
K11OUT2:
RET
T1_INT:
INCB TN
CMPB TN,#4
JNC READDATA1
CLRB TN
LDB F_4,#1
READDATA1:
RET
READ:
LDB K,#8
LDB BUF,#00H
RDLOOP:
LCALL SDA1
LCALL SCL1
LDB JX,P2
SHLB BUF,#1
JBS JX,6,GA1
GAO:
ANDB BUF,#0FEH
SJMP GA2
GA1:
ORB BUF,#01H
GA2:
NOP
LCALL SCL0
DJNZ K,RDLOOP
RET
READACK:
LCALL READ
ACK1:
LCALL SDA0
LCALL SCL1
LCALL SCL0
RET
WRITE:
LDB K,#8
WR1:
SHLB BUF,#1
JC WR2
LCALL SDA0
SJMP WR3
WR2:
LCALL SDA1
WR3:
NOP
NOP
LCALL SCL1
LCALL SCL0
DJNZ K,WR1
LCALL SDA1
RET
WRITEACK:
LCALL WRITE
ACK0:
LCALL SDA1
NOP
NOP
LCALL SCL1
LCALL SCL0
RET
WRITEYEAR:
LCALL STT
LDB BUF,#60H
LCALL WRITEACK
LDB BUF,T_6
LCALL SPP
RET
WRITEMONTH:
LCALL STT
LDB BUF,#50H
LCALL WRITEACK
LDB BUF,T_5
LCALL SPP
RET
WRITEDAY:
LCALL STT
LDB BUF,#40H
LCALL WRITEACK
LDB BUF,T_4
LCALL SPP
RET
WRITEHOUR:
LCALL STT
LDB BUF,#20H
LCALL WRITEACK
LDB BUF,T_3
LCALL SPP
RET
WRITEMINUTE:
LCALL STT
LDB BUF,#10H
LCALL WRITEACK
LDB BUF,T_2
LCALL SPP
RET
WRITESECOND:
LCALL STT
LDB BUF,#00H
LCALL WRITEACK
LDB BUF,T_1
LCALL SPP
RET
STT:
LCALL START
LDB BUF,#64H
LCALL WRITEACK
RET
SPP:
LCALL WRITEACK
LCALL STOP
RET
START:
LDB 80H,#30H
JJKK:
NOP
NOP
DJNZ 80H,JJKK
START1:
LCALL SDA1
LCALL SCL1
LCALL SDA0
LCALL SCL0
RET
STOP:
LCALL SDA0
LCALL SCL1
LCALL SDA1
RET
SCL0:
ANDB P2,#7FH
NOP
NOP
NOP
RET
SCL1:
ORB P2,#80H
NOP
NOP
NOP
RET
SDA0:
ANDB P2,#0BFH
NOP
NOP
NOP
RET
SDA1:
ORB P2,#40H
NOP
NOP
NOP
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -