MOV DS1302_ADDR,#89H ;READ OUT MONTH
LCALL READ
MOV MONTH,DS1302_DATA
MOV DS1302_ADDR,#87H ;READ OUT DAY LCALL READ
MOV DAY,DS1302_DATA
MOV DS1302_ADDR,#85H ;READ OUT HOUR
LCALL READ
MOV 76H,R1
MOV 46H,R1 MOV 77H,R2
MOV 47H,R2
MOV R0,HOUR ;小时分离,送显示缓存 LCALL DIVIDE MOV 74H,R1 MOV 44H,R1
MOV HOUR,DS1302_DATA
MOV DS1302_ADDR,#83H ;READ OUT MINTUE
LCALL READ
MOV MINTUE,DS1302_DATA
MOV DS1302_ADDR,#81H ;READ OUT SECOND
LCALL READ
MOV SECOND,DS1302_DATA
MOV R0,YEAR ;年分离,送显示缓存 LCALL DIVIDE MOV 7BH,R1 MOV 4BH,R1
MOV 7CH,R2 MOV 4CH,R2
MOV 78H,WEEK MOV 48H,WEEK
MOV R0,MONTH ;月分离,送显示缓存
LCALL DIVIDE
MOV 79H,R1 MOV 49H,R1 MOV 7AH,R2
MOV 4AH,R2
MOV R0,DAY ;日分离,送显示缓存 LCALL DIVIDE
;******************************** 《 公历设置程序 》
;********************************
SETG: SETB TR1 SETB ET1 CLR 08H CLR 09H CLR 0AH CLR 0BH CLR 0CH CLR 0DH
25
MOV 75H,R2
分分离,送显示缓存 MOV 42H,R1 MOV 73H,R2
秒分离,送显示缓存
LCALL DIVIDE MOV 70H,R1 MOV 40H,R1 MOV 71H,R2
LCALL GENGXIN ;更新农历程序
闰月,则p1.3清0,指示灯亮
LJMP MAIN1
SSS: SETB P1.3 ;非闰月,则p1.3置位,指示灯灭LJMP MAIN1
CLR 0EH CLR 0FH
MOV DS1302_ADDR,#8EH
MOV DS1302_DATA,#00H ;允许写1302 LCALL WRITE
MOV DS1302_ADDR,#80H
MOV DS1302_DATA,#80H ;1302停止振荡 LCALL WRITE
MOV 45H,R2
MOV R0,MINTUE ; LCALL DIVIDE MOV 72H,R1
MOV 43H,R2
MOV R0,SECOND ; MOV 41H,R2 LCALL DISPLAY
JNB P1.1,SETG JNB F0,SSS
CLR P1.3 ;
GWAIT: LCALL DISPLAY JNB P1.1,GWAIT SETG1: LCALL DISPLAY JNB P1.1,SETG2 JNB P1.2,GADDYEAR AJMP SETG1
GADDYEAR: MOV R7,66H ;年加1 LCALL ADD1 MOV 66H,A
CJNE A,#51H,GADDYEAR1 MOV 66H,#01H
GADDYEAR1: MOV DS1302_ADDR,#8CH ;年值送1302 MOV DS1302_DATA,66H LCALL WRITE MOV R0,66H
LCALL DIVIDE ;年分离送显示缓冲 MOV 4BH,R1 MOV 7BH,R1 MOV 4CH,R2 MOV 7CH,R2 WAITT1: LCALL DISPLAY JNB P1.2,WAITT1 AJMP SETG1
SETG2: SETB 0AH ;调月时闪标志 GWAIT2: LCALL DISPLAY JNB P1.1,GWAIT2 SETG3: LCALL DISPLAY JNB P1.1,SETG4 JNB P1.2,GADDMONTH AJMP SETG3
GADDMONTH: MOV R7,65H ;月加1 LCALL ADD1 MOV 65H,A
CJNE A,#13H,GADDMONTH1 MOV 65H,#01H
GADDMONTH1:MOV DS1302_ADDR,#88H ;月值送1302 MOV DS1302_DATA,65H LCALL WRITE MOV R0,65H
LCALL DIVIDE ;月分离送显示缓冲 MOV 79H,R1 MOV 49H,R1 MOV 7AH,R2 MOV 4AH,R2
WAITT2: LCALL DISPLAY JNB P1.2,WAITT2 AJMP SETG3
SETG4: SETB 0BH ;调日时闪标志 GWAIT4: LCALL DISPLAY JNB P1.1,GWAIT4 SETG5: LCALL DISPLAY JNB P1.1,SETG6 JNB P1.2,GADDDAY AJMP SETG5
GADDDAY: MOV R7,63H ;日加1 LCALL ADD1 MOV 63H,A
CJNE A,#32H,GADDDAY1 MOV 63H,#01H
GADDDAY1: MOV DS1302_ADDR,#86H ;日值送1302 MOV DS1302_DATA,63H LCALL WRITE MOV R0,63H
LCALL DIVIDE ;日分离送显示缓冲 MOV 76H,R1 MOV 46H,R1 MOV 77H,R2 MOV 47H,R2 WAITT3: LCALL DISPLAY 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 ;星期分离送显示缓冲
26
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 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 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
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
LCALL WRITE
MOV DS1302_ADDR,#8EH
MOV LCALL WRITE CLR 08H CLR 09H CLR 0AH CLR 0BH CLR 0CH CLR 0D
27
分分离送显示缓冲 ;1302晶振开始振荡
DS1302_DATA,#80H ;禁止写入1302