1、电子钟 万年历 程序 毕业设计SCLK EQU P3.2IO EQU P3.3RST EQU P3.4YEAR DATA 66HMONTH DATA 65HWEEK DATA 64HDAY DATA 63HHOUR DATA 62HMINTUE DATA 61HSECOND DATA 60HDS1302_ADDR DATA 32HDS1302_DATA DATA 31H ORG 0000H AJMP START ORG 0003H RETI ORG 000BH RETI ORG 0013H RETI ORG 001BH LJMP INTT1 ORG 0023H RETI ORG 002BH R
2、ETISTART: SETB EA ;;初值 MOV SCON,#00H ; 串行输出,方式0 MOV TMOD,#10H ;计数器1,方式1 MOV TL1,#00H MOV TH1,#00H MOV DS1302_ADDR,#8EH ;允许写1302 MOV DS1302_DATA,#00H LCALL WRITE MOV DS1302_ADDR,#90H MOV DS1302_DATA,#0A6H ;1302充电,充电电流1.1MA LCALL WRITEMAIN1: MOV DS1302_ADDR,#8DH ;;主程序, 读出年 LCALL READ MOV YEAR,DS1302_D
3、ATA MOV DS1302_ADDR,#8BH ;读出星期 LCALL READ MOV WEEK,DS1302_DATA MOV DS1302_ADDR,#89H ;读出月 LCALL READ MOV MONTH,DS1302_DATA MOV DS1302_ADDR,#87H ;读出日 LCALL READ MOV DAY,DS1302_DATA MOV DS1302_ADDR,#85H ;读出小时 LCALL READ MOV HOUR,DS1302_DATA MOV DS1302_ADDR,#83H ;读出分钟 LCALL READ MOV MINTUE,DS1302_DATA M
4、OV DS1302_ADDR,#81H ;读出秒 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 MOV 76H,R1 MO
5、V 46H,R1 MOV 77H,R2 MOV 47H,R2 MOV R0,HOUR ;小时分离,送显示缓存 LCALL DIVIDE MOV 74H,R1 MOV 44H,R1 MOV 75H,R2 MOV 45H,R2 MOV R0,MINTUE ;分钟分离,送显示缓存; LCALL DIVIDE MOV 72H,R1 MOV 42H,R1 MOV 73H,R2 MOV 43H,R2 MOV R0,SECOND ;秒分离,送显示缓存 LCALL DIVIDE MOV 70H,R1 MOV 40H,R1 MOV 71H,R2 MOV 41H,R2 LCALL DISPLAY LCALL GE
6、NGXIAN ;调用更新农历程序 JNB P1.2,NUM JNB P1.1,SETG JNB F0,SSS CLR P1.3 ;非闰月,则p0.4清零,指示灯亮 LJMP MAIN1SSS: SETB P1.3 ;闰月,则p0.4置位,指示灯不亮 LJMP MAIN1 NUM:MOV MONTH,#0AAH MOV HOUR,#0AAH MOV MINTUE,#0AAH MOV SECOND,#04H MOV R0,MONTH LCALL DIVIDE MOV 79H,R1 MOV 49H,R1 MOV 7AH,R2 MOV 4AH,R2 MOV R0,HOUR LCALL DIVIDE M
7、OV 74H,R1 MOV 44H,R1 MOV 75H,R2 MOV 45H,R2 MOV R0,MINTUE LCALL DIVIDE MOV 72H,R1 MOV 42H,R1 MOV 73H,R2 MOV 43H,R2 MOV R0,SECOND LCALL DIVIDE MOV 70H,R1 MOV 40H,R1 MOV 71H,R2 MOV 41H,R2 LCALL DISPLAY JNB P1.2,NUM LJMP MAIN1SETG: SETB TR1 SETB ET1 ;公历设置程序 CLR 08H CLR 09H CLR 0AH CLR 0BH CLR 0CH CLR 0D
8、H CLR 0EH CLR 0FH MOV DS1302_ADDR,#8EH MOV DS1302_DATA,#00H ;允许写1302 LCALL WRITE MOV DS1302_ADDR,#80H MOV DS1302_DATA,#80H LCALL WRITE ;1302停止振荡GWAIT: LCALL DISPLAY JNB P1.1,GWAITSETG1: LCALL DISPLAY JNB P1.1,SETG2 JNB P1.2,GADDYEAR AJMP SETG1GADDYEAR: MOV R7,66H ;年加一 LCALL ADD1 MOV 66H,A CJNE A,#51
9、H,GADDYEAR1 MOV 66H,#01HGADDYEAR1: 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,R2WAITT1: LCALL DISPLAY JNB P1.2,WAITT1 AJMP SETG1SETG2: SETB 0AH ;调月时闪标志GWAIT2: LCALL DISPLAY JNB P1.1,GWAIT2SETG3: LCALL DISP
10、LAY JNB P1.1,SETG4 JNB P1.2,GADDMONTH AJMP SETG3GADDMONTH: MOV R7,65H ;月加一 LCALL ADD1 MOV 65H,A CJNE A,#13H,GADDMONTH1 MOV 65H,#01HGADDMONTH1: 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,R2WAITT2: LCALL DI
11、SPLAY JNB P1.2,WAITT2 AJMP SETG3SETG4: SETB 0BH ;调日时闪标志GWAIT4: LCALL DISPLAY JNB P1.1,GWAIT4SETG5: LCALL DISPLAY JNB P1.1,SETG6 JNB P1.2,GADDDAY AJMP SETG5GADDDAY: MOV R7,63H ;日加一 LCALL ADD1 MOV 63H,A CJNE A,#32H,GADDDAY1 MOV 63H,#01HGADDDAY1: MOV DS1302_ADDR,#86H ;日值送人1302 MOV DS1302_DATA,63H LCALL
12、 WRITE MOV R0,63H LCALL DIVIDE ;日分离,送显示缓存 MOV 76H,R1 MOV 46H,R1 MOV 77H,R2 MOV 47H,R2WAITT3: LCALL DISPLAY JNB P1.2,WAITT3 AJMP SETG5SETG6: SETB 0CH ;调星期时闪标志GWAIT6: LCALL DISPLAY JNB P1.1,GWAIT6SETG7: LCALL DISPLAY JNB P1.1,SETG8 JNB P1.2,GADDWEEK AJMP SETG7 ;星期加一GADDWEEK: MOV R7,64H LCALL ADD1 MOV
13、64H,A CJNE A,#08H,GADDWEEK1 MOV 64H,#01HGADDWEEK1: MOV DS1302_ADDR,#8AH MOV DS1302_DATA,64H ;星期值送人1302 LCALL WRITE MOV R0,64H LCALL DIVIDE ;星期值分离送显示缓存 MOV 48H,R1 MOV 78H,R1WAITT4: LCALL DISPLAY JNB P1.2,WAITT4 AJMP SETG7SETG8: SETB 0DH ;调小时时闪标志GWAIT8: LCALL DISPLAY JNB P1.1,GWAIT8SETG9: LCALL DISPLA
14、Y JNB P1.1,SETG10 JNB P1.2,GADDHOUR AJMP SETG9GADDHOUR: MOV R7,62H ;小时加一 LCALL ADD1 MOV 62H,A CJNE A,#24H,GADDHOUR1 MOV 62H,#00HGADDHOUR1: 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,R2WAITT5: LCALL DISPLAY JNB P1.2,WAITT5 AJMP SETG9SETG10: SETB 0EH ;调分时候闪标志GWAITT10: LCALL DISPLAY JNB P1.1,GWAITT10SETG11: LCALL DISPLAY JNB P1.1,SETGOUT JNB P1.2,GADDMINTUE AJMP SETG11GADDMINTUE: MOV R7,61H ;分钟加一
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1