⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 -

📁 一个可沿地面黑线行走
💻
📖 第 1 页 / 共 2 页
字号:
        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 + -