📄 万年历.asm
字号:
JNB P1.2,WAITT3
AJMP SETG5
SETG6: SETB 0CH ;调星期时闪标志
GWAIT6: LCALL DISPLAY
JNB P1.1,GWAIT6
SETG7: LCALL DISPLAY
JNB P1.1,SETG8
JNB P1.2,GADDWEEK
AJMP SETG7
GADDWEEK: MOV R7,64H ;星期加1
LCALL ADD1
MOV 64H,A
CJNE A,#08H,GADDWEEK1
MOV 64H,#01H
GADDWEEK1: MOV DS1302_ADDR,#8AH ;星期值送1302
MOV DS1302_DATA,64H
LCALL WRITE
MOV R0,64H
LCALL DIVIDE ;星期分离送显示缓冲
MOV 48H,R1
MOV 78H,R1
WAITT4: LCALL DISPLAY
JNB P1.2,WAITT4
AJMP SETG7
SETG8: SETB 0DH ;调小时时闪标志
GWAIT8: LCALL DISPLAY
JNB P1.1,GWAIT8
SETG9: LCALL DISPLAY
JNB P1.1,SETG10
JNB P1.2,GADDHOUR
AJMP SETG9
GADDHOUR: MOV R7,62H ;小时加1
LCALL ADD1
MOV 62H,A
CJNE A,#24H,GADDHOUR1
MOV 62H,#00H
GADDHOUR1: MOV DS1302_ADDR,#84H ;小时值送1302
MOV DS1302_DATA,62H
LCALL WRITE
MOV R0,62H
LCALL DIVIDE ;小时分离送显示缓冲
MOV 74H,R1
MOV 44H,R1
MOV 75H,R2
MOV 45H,R2
WAITT5: LCALL DISPLAY
JNB P1.2,WAITT5
AJMP SETG9
SETG10: SETB 0EH ;调分时闪标志
GWAIT10: LCALL DISPLAY
JNB P1.1,GWAIT10
SETG11: LCALL DISPLAY
JNB P1.1,SETGOUT
JNB P1.2,GADDMINTUE
AJMP SETG11
GADDMINTUE: MOV R7,61H ;分加1
LCALL ADD1
MOV 61H,A
CJNE A,#60H,GADDMINTUE1
MOV 61H,#00H
GADDMINTUE1: MOV DS1302_ADDR,#82H ;分值送1302
MOV DS1302_DATA,61H
LCALL WRITE
MOV R0,61H
LCALL DIVIDE ;分分离送显示缓冲
MOV 72H,R1
MOV 42H,R1
MOV 73H,R2
MOV 43H,R2
WAITT6: LCALL DISPLAY
JNB P1.2,WAITT6
AJMP SETG11
SETGOUT: LCALL DISPLAY
JNB P1.1,SETGOUT
LCALL GENGXIN
MOV DS1302_ADDR,#80H
MOV DS1302_DATA,#00H ;1302晶振开始振荡
LCALL WRITE
MOV DS1302_ADDR,#8EH
MOV DS1302_DATA,#80H ;禁止写入1302
LCALL WRITE
CLR 08H
CLR 09H
CLR 0AH
CLR 0BH
CLR 0CH
CLR 0DH
CLR 0EH
CLR 0FH
CLR ET1
CLR TR1 ;关闪中断
LJMP MAIN1
;***********************************
;* 闪动调时程序 *
;***********************************
INTT1: PUSH ACC
PUSH PSW
GFLASH: CPL 0FH
JB 0FH,GFLASH1
MOV 7CH,4CH ;全部显示
MOV 7BH,4BH
MOV 7AH,4AH
MOV 79H,49H
MOV 78H,48H
MOV 77H,47H
MOV 76H,46H
MOV 75H,45H
MOV 74H,44H
MOV 73H,43H
MOV 72H,42H
MOV 71H,41H
MOV 70H,40H
GFLASHOUT: POP PSW
POP ACC
RETI
GFLASH1: JB 0AH,GFLASH2 ;调年闪
MOV 7CH,#0AH
MOV 7BH,#0AH
AJMP GFLASHOUT
GFLASH2: JB 0BH,GFLASH3 ;调月闪
MOV 7AH,#0AH
MOV 79H,#0AH
AJMP GFLASHOUT
GFLASH3: JB 0CH,GFLASH4 ;调日闪
MOV 77H,#0AH
MOV 76H,#0AH
AJMP GFLASHOUT
GFLASH4: JB 0DH,GFLASH5 ;调星期闪
MOV 78H,#0AH
AJMP GFLASHOUT
GFLASH5: JB 0EH,GFLASH6 ;调小时闪
MOV 75H,#0AH
MOV 74H,#0AH
AJMP GFLASHOUT
GFLASH6: MOV 73H,#0AH ;调分闪
MOV 72H,#0AH
AJMP GFLASHOUT
;*********************************
;* 加1程序 *
;*********************************
ADD1: MOV A,R7
ADD A,#01H
DA A
RET
;*********************************
;* 分离程序 *
;*********************************
DIVIDE: MOV A,R0
ANL A,#0FH
MOV R1,A
MOV A,R0
SWAP A
ANL A,#0FH
MOV R2,A
RET
;*********************************
;* 写1302程序 *
;*********************************
WRITE: CLR SCLK
NOP
SETB RST
NOP
MOV A,DS1302_ADDR
MOV R4,#8
WRITE1: RRC A ;送地址给1302
NOP
NOP
CLR SCLK
NOP
NOP
NOP
MOV IO,C
NOP
NOP
NOP
SETB SCLK
NOP
NOP
DJNZ R4,WRITE1
CLR SCLK
NOP
MOV A,DS1302_DATA
MOV R4,#8
WRITE2: RRC A
NOP ;送数据给1302
CLR SCLK
NOP
NOP
MOV IO,C
NOP
NOP
NOP
SETB SCLK
NOP
NOP
DJNZ R4,WRITE2
CLR RST
RET
;*******************************
;* 读1302程序 *
;*******************************
READ: CLR SCLK
NOP
NOP
SETB RST
NOP
MOV A,DS1302_ADDR
MOV R4,#8
READ1: RRC A
NOP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -