📄 -
字号:
start_year EQU 01; 定义查询表起始年份,01--199 表示1901-2099 年
;以下三单元为需转换的公历日期是子程序的入口数据
time_year DATA 39h
time_month DATA 3Ah ;BIT7 表示世纪,为1 表示19 世纪,为0 表示20 世纪
time_date DATA 3Bh
;以下三单元存转换后农历日期与入口单元重叠,如要保留入口信息,请重定义出口地址
CONvert_yeAr DATA 4Bh
CONvert_mONth DATA 40h ;BIT7 为1 表示闰月
CONvert_dAte DATA 41h
temp_Byte1 DATA 4Ch
temp_Byte2 DATA 4Dh
temp_Byte3 DATA 4Eh
temp_Byte4 DATA 4Fh
temp_Byte5 DATA 50h
time_week DATA 42h ;星期出口
ORG 00H
LJMP MAIN
ORG 000BH
MOV TL0,#0B5H
MOV TH0,#3CH
LJMP TT0
ORG 001BH
LJMP TT1
MAIN: MOV SP,#68H
SETB EA
SETB ET0
SETB ET1
MOV TMOD,#11H
MOV TH0,#3CH
MOV TL0,#0B5H
MOV TH1,#3CH
MOV TL1,#0B5H
SETB TR0
MOV R1,#20H
MOV R7,#4FH
QQ: MOV @R1,#00H
INC R1
DJNZ R7,QQ
MOV 48H,#5
MOV 5CH,#4
MOV 5DH,#8
SETB 01H
SETB 02H
SETB 03H
SETB 07H
MOV 53H,#20
MOV 64H,#06H
MOV 3CH,#12H ; 时间初值
MOV 38H,#20H ;年月日初值
MOV 39H,#04H
MOV 3AH,#08H
MOV 3BH,#09H
LCALL XINXIN
MOV R1,#3CH
MOV R0,#28H
LCALL CAIZI
SETB 08H
DISP: LCALL DISP1
LCALL KEY
LCALL SUDISP
SJMP DISP
DISP1: MOV 51H,#0FEH
MOV DPTR,#TAB
MOV R0,#28H
EE: MOV A,@R0
CJNE R0,#28H,MYN
JNZ MYN
MOV A,#0DH
MYN: MOVC A,@A+DPTR
MOV P1,A
MOV C,08H ;整点报时
MOV P1.7,C
MOV A,51H
MOV B,A
ORL A,5EH
MOV P0,A
LCALL DELAY
MOV A,B
RL A
MOV 51H,A
INC R0
JB ACC.6,EE
SETB P0.5
MOV 51H,#0F7H
MOV DPTR,#TAB
MOV R1,#30H
TT: MOV A,@R1
CJNE R1,#30H,LK10
JNZ LK1
MOV A,#0DH
LK10: CJNE R1,#32H,LK1
JNZ LK1
MOV A,#0DH
LK1: ANL A,#0FH
MOVC A,@A+DPTR
MOV P2,A
MOV A,51H
MOV P3,A
LCALL DELAY
RL A
MOV 51H,A
INC R1
JB ACC.0 ,TT
SETB P3.7
MOV P2,#0FFH
RET
TT0: PUSH PSW
PUSH ACC
PUSH DPH
PUSH DPL
PUSH B
SETB RS0
DJNZ 48H,WW
MOV 48H,#5
JNB 07H,KJ
SETB 08H
LJMP KJ1
KJ: CPL 08H
KJ1: DJNZ 5CH,WW
MOV 5CH,#4
MOV R0,#3EH
LCALL ADD1
CJNE A,#60H,WW
MOV @R0,#00H
SETB 07H
DEC R0
LCALL ADD1
CJNE A,#60H,WWX
CLR 08H
MOV @R0,#00H
DEC R0
LCALL ADD1
CJNE A,#24H,WWX
MOV @R0,#00H
LCALL XINLI ;新历
LCALL XINXIN
WWX: JNB 05H,WW
MOV A,3DH
CJNE A,63H,WW
MOV A,3CH
CJNE A,62H,WW
CLR 07H
WW: JNB 04H,YBBY
MOV R1,#61H
MOV R0,#28H
LJMP YBB1
YBBY: MOV R1,#3CH
MOV R0,#28H
YBB1: LCALL CAIZI
POP B
POP DPL
POP DPH
POP ACC
POP PSW
RETI
ADD1: MOV A,@R0
ADD A,#1
DA A
MOV @R0,A
RET
DEC1: MOV A,@R0
ADD A,#99H
DA A
MOV @R0,A
RET
CAIZI: MOV A,@R1 ;入口首地址在R1,出口首地址在R0
SWAP A
XCHD A,@R0
INC R0
SWAP A
XCHD A,@R0
INC R1
MOV A,@R1
INC R0
SWAP A
XCHD A,@R0
INC R0
SWAP A
XCHD A,@R0
INC R1
MOV A,@R1
INC R0
SWAP A
XCHD A,@R0
INC R0
SWAP A
XCHD A,@R0
INC R1
MOV A,@R1
INC R0
SWAP A
XCHD A,@R0
INC R0
SWAP A
XCHD A,@R0
RET
XINLI: LCALL PAN ;判断这个月的天数
MOV R0,#3BH
LCALL ADD1
CJNE A,4AH,REW
MOV @R0,#01H
DEC R0
LCALL ADD1
ANL A,#1FH
CJNE A,#13H,REW
MOV @R0,#01H
DEC R0
LCALL ADD1
CJNE A,#00H,REW
DEC R0
LCALL ADD1
REW: RET
PAN: MOV A,3AH
MOV DPTR,#MONTH
MOVC A,@A+DPTR
MOV 4AH,A
MOV A,39H ;判断是否是闰年
MOV B,#16
DIV AB
MOV 27H,B
MOV B,#10
MUL AB
ADD A,27H ;16进制年出口
ANL A,#03H
JNZ REY
MOV A,3AH
CJNE A,#2,REY ;判断是否是2月
MOV A,4AH
ADD A,#1
DA A
MOV 4AH,A
REY: RET
MONTH: DB 32H,32H,29H,32H,31H,32H,31H,32H,32H,31H,
DB 32H,32H,32H,32H,32H,32H,32H,31H,32H
SUDISP:
MOV R2,#8
MOV R1,#5BH
MOV DPTR,#TAB0
LP: MOV A,@R1
CJNE R1,#57H,LP11
JB 01H,LP1
MOV A,#0AH
lp11: CJNE R1,#56H,LP12
JB 01H,LP1
MOV A,#0AH
lp12: CJNE R1,#55H,LP13
JB 01H,LP1
MOV A,#0AH
lp13: CJNE R1,#54H,LP110
JB 01H,LP1
MOV A,#0AH
lp110: CJNE R1,#59H,LP111
JB 02H,LP1
MOV A,#0AH
lp111: CJNE R1,#58H,LP121
JNZ MAI
MOV A,#0AH
MAI: JB 02H,LP1
MOV A,#0AH
lp121: CJNE R1,#5BH,LP131
JB 03H,LP1
MOV A,#0AH
lp131: CJNE R1,#5AH,LP1
JNZ MAI1
MOV A,#0AH
MAI1: JB 03H,LP1
MOV A,#0AH
LP1: MOVC A,@A+DPTR
MOV SBUF,A
JNB TI,$
CLR TI
DEC R1
DJNZ R2,LP
RET
DELAY: MOV 49H,#2; 延时子程序
D1: MOV 52H,#250
DE: DJNZ 52H,DE
DJNZ 49H,D1 ;A ;B ;C ;D
RET ;P ;N ;F
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,8CH,0C8H,8EH,0FFH
TAB0: DB 3H,9FH,25H,0DH,99H,49H,41H,1FH,01H,9H,0FFH;
KEY: MOV P3,#0FFH
MOV A,P3
MOV P2,#0FFH
ORL A,#087H
CPL A
JZ HU
LCALL DISP1
MOV A,P3
MOV P2,#0FFH
ORL A,#087H
CPL A
JZ HU
MOV 67H,P3
WAIT: LCALL DISP1
MOV A,P3
MOV P2,#0FFH
ORL A,#087H
CPL A
JNZ WAIT
MOV 53H,#20
SETB 07H
SETB TR1
MOV A,67H
ORL A,#087H
JNB ACC.3,K1;减1
JNB ACC.4,K0;增1
JNB ACC.5,K2;功能键
JNB ACC.6,K3;定时键
HU:
RET
K3: LCALL CLOCK
RET
K0: MOV 53H,#20
MOV A,5FH ;年加一
CJNE A,#1,YY1
LCALL YEARADD
LCALL XINXIN
LJMP HU
YY1: CJNE A,#2,YY2 ;月加一
LCALL MONADD
LCALL PAN
LCALL XINXIN
LJMP HU
YY2: CJNE A,#3,YY3 ;日加一
LCALL DAYADD
LCALL XINXIN
LJMP HU
YY3: CJNE A,#4,YY4 ;时加一
LCALL HOURADD
LJMP HU
YY4: CJNE A,#5,YY5 ;分加一
LCALL MINADD
LJMP HU
YY5: CJNE A,#6,YY6 ;闹钟关
LCALL CLOCKCLOSE
LJMP HU
YY6: CJNE A,#7,YY7 ;闹钟分加一
LCALL CLOCKMINADD
LJMP HU
YY7: CJNE A,#8,YY8 ;闹钟时加一
LCALL CLOCKHURADD
LJMP HU
YY8: CJNE A,#9,HUX ;闹钟开
LCALL CLOCKOPEN
LJMP HU
HUX: CLR TR1
LJMP HU
K1: LCALL K12
LJMP HU
K2: MOV 53H,#20
CLR 04H
MOV A,5FH
ADD A,#1
MOV 5FH,A
WK2: CJNE A,#4,WK3;调时
MOV 5EH,#03H
LJMP HU
WK3: CJNE A,#5,HU111;调分
MOV 5EH,#0CH
LJMP HU
HU111: MOV 5EH,#00H
MOV 5FH,#00H
CLR TR1
SETB 01H
SETB 02H
SETB 03H
LJMP HU
YEARADD:MOV R0,#39H
LCALL ADD1
CJNE A,#00H,HU11
MOV @R0,#00H
DEC R0
LCALL ADD1
LCALL XINXIN
HU11: RET
MONADD: MOV R0,#3AH
LCALL ADD1
CJNE A,#13H,HU12
MOV @R0,#01H
HU12: RET
DAYADD: MOV R0,#3BH
LCALL ADD1
LCALL PAN
MOV A,@R0
CJNE A,4AH,HU13
MOV @R0,#01H
HU13: RET
HOURADD:MOV R0,#3CH
LCALL ADD1
CJNE A,#24H,HU14
MOV @R0,#00H
HU14: RET
MINADD: MOV R0,#3DH
LCALL ADD1
CJNE A,#60H,HU15
MOV @R0,#00H
HU15: RET
YEARDEC:MOV R0,#39H
LCALL DEC1
CJNE A,#99H,HU1
MOV @R0,#99H
DEC R0
LCALL DEC1
LCALL XINXIN
HU1: RET
MONDEC: MOV R0,#3AH
LCALL DEC1
CJNE A,#00H,HU2
MOV @R0,#12H
HU2: RET
DAYDEC: MOV R0,#3BH
LCALL DEC1
LCALL PAN
MOV A,@R0
CJNE A,#00H,HU3
MOV A,4AH
ADD A,#99H
DA A
MOV @R0,A
HU3: RET
HOURDEC:MOV R0,#3CH
LCALL DEC1
CJNE A,#99H,HU4
MOV @R0,#23H
HU4: RET
MINDEC: MOV R0,#3DH
LCALL DEC1
CJNE A,#99H,HU5
MOV @R0,#59H
HU5: RET
TT1: MOV TH1,#3CH
MOV TL1,#0B0H
PUSH PSW
PUSH ACC
PUSH DPH
PUSH DPL
PUSH B
DJNZ 5DH,DFGQ
MOV 5DH,#8
MOV A,5FH
CJNE A,#1,WKK0;调年
CPL 01H
SETB 02H
SETB 03H
LJMP DFG1
DFGQ: LJMP DFG
WKK0: CJNE A,#2,WKK1;调月
CPL 02H
SETB 01H
SETB 03H
LJMP DFG1
WKK1: CJNE A,#3,WKK2;调日
CPL 03H
SETB 02H
SETB 01H
LJMP DFG1
WKK2: CJNE A,#4,WKK3;调时
SETB 03H
MOV A,5EH
CPL ACC.0
CPL ACC.1
MOV 5EH,A
LJMP DFG1
WKK3: CJNE A,#5,WKK4;调分
MOV A,5EH
CPL ACC.2
CPL ACC.3
MOV 5EH,A
LJMP DFG1
WKK4: CJNE A,#6,WKK5;闹钟~~~关
MOV A,5EH
CPL ACC.2
CPL ACC.3
CPL ACC.4
MOV 5EH,A
LJMP DFG1
WKK5: CJNE A,#7,WKK6 ;闹钟分~~
MOV A,5EH
CPL ACC.4
CPL ACC.5
MOV 5EH,A
LJMP DFG1
WKK6: CJNE A,#8,WKK7; 闹钟时~~
MOV A,5EH
CPL ACC.2
CPL ACC.3
MOV 5EH,A
LJMP DFG1
WKK7: CJNE A,#9,DFG1; 闹钟~~~开
MOV A,5EH
CPL ACC.2
CPL ACC.3
MOV 5EH,A
LJMP DFG1
DFG1: DJNZ 53H,DFG
MOV 5EH,#00H
MOV 5FH,#00H
CLR TR1
SETB 01H
SETB 02H
SETB 03H
CLR 04H
MOV 60H,#00H
DFG: POP B
POP DPL
POP DPH
POP ACC
POP PSW
RETI
XINXIN: MOV A,38H
CJNE A,#19H,HFG11
MOV A,3AH
SETB ACC.7
MOV 3AH,A
SJMP KK3
HFG11: MOV A,3AH
CLR ACC.7
MOV 3AH,A
KK3: LCALL CONvert ;新历转农历
LCALL GetWeek ;新历转星期
MOV A,3AH
CLR ACC.7
MOV 3AH,A
MOV R1,#38H
MOV R0,#54H
LCALL CAIZI
LCALL SUDISP
MOV R1,#40H
MOV R0,#30H
LCALL CAIZI
MOV 34H,35H
MOV A,34H
JNZ WW11
MOV 34H,#8
WW11: RET
CLOCK: MOV A,60H
ADD A,#1
MOV 60H,A
CJNE A,#1,GHJ
SETB 04H
JB 05H,HHH
MOV 5FH,#06H
MOV 5EH,#1CH
MOV 61H,#0A1H
MOV 62H,#0CH
MOV 63H,#0CDH
LJMP GHJ1
HHH:
MOV 5FH,#09H
MOV 5EH,#0CH
MOV 62H,#0BH
MOV 63H,#0DDH
LJMP GHJ1
GHJ: CJNE A,#2,GHJ01
JNB 05H,GHJ11
MOV 61H,#0A1H
MOV 62H,64H
MOV 63H,65H
MOV 5EH,#0CH
MOV 5FH,#8
LJMP GHJ1
GHJ01: CJNE A,#3,GHJ11
JNB 05H,GHJ11
MOV 5FH,#7
MOV 5EH,#30H
GHJ1:
RET
GHJ11: CLR 04H
CLR TR1
MOV 60H,#00H
MOV 5EH,#00H
MOV 5FH,#00H
RET
CLOCKCLOSE:
SETB 04H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -