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

📄 万年历.asm

📁 单片机设计万年历过户就让他推举投影机荣誉军人他有今天加入条件
💻 ASM
📖 第 1 页 / 共 5 页
字号:
                                          MOV 48H,week
                                          MOV 78H,week

                                 WAIT2:  LCALL  DISPLAY
                                          JNB    P1.4,WAIT2
                                          AJMP   SETG1




                                SETG2:    SETB 0AH                    ;调月时闪标志
                               GWAIT3:    LCALL DISPLAY
                                          JNB P1.1,GWAIT3

                                SETG3:    LCALL DISPLAY
                                          JNB P1.1,SETGDAY
                                          JNB P1.3,GADDMONTH
                                          JNB P1.4,GDECMONTH
                                          JNB P1.2,JUMPYEAR
                                          JNB F0,SSSMONTH
                                          CLR P1.0                ;闰月,则p1.1清0,指示灯亮
                                          LJMP SETG3
                                SSSMONTH: SETB P1.0

                                          AJMP SETG3
                               JUMPYEAR:  LCALL DISPLAY
                                          CLR  0AH
                                          JNB P1.2,JUMPYEAR
                                          AJMP SETG1
                               SETGDAY:   AJMP SETG4
                             GADDMONTH:   MOV R7,65H                ;月加1
                                          LCALL ADD1
                                          MOV 65H,A
                                          CJNE A,#13H,GADDMONTH1
                                          MOV 65H,#01H
                             GADDMONTH1:  LCALL GETWEEK             ;月加1同时换算出星期
                                          LCALL  YMD                ;转换农历月日
                                          MOV DS1302_ADDR,#88H        ;月值送1302
                                          MOV DS1302_DATA,65H
                                          LCALL WRITE
                                          MOV DS1302_ADDR,#8AH        ;星期值送1302
                                          MOV DS1302_DATA,64H
                                          LCALL WRITE

                                          MOV R0,65H
                                          LCALL DIVIDE             ;月分离送显示缓冲
                                          MOV 79H,R1
                                          MOV 49H,R1
                                          MOV 7AH,R2
                                          MOV 4AH,R2
                                          MOV  R0,64H
                                          LCALL DIVIDE             ;星期分离送显示缓冲
                                          MOV 48H,week
                                          MOV 78H,week
                                WAIT4:   LCALL DISPLAY
                                          JNB P1.3,WAIT4
                                          AJMP SETG3

                                GDECMONTH:MOV R7,65H                ;月减1
                                          LCALL DEC1
                                          MOV 65H,A
                                          CJNE A,#00H,GDECMONTH1
                                          MOV 65H,#12H
                             GDECMONTH1:  LCALL GETWEEK             ;月减1同时换算出星期
                                          LCALL  YMD                ;转换农历月日
                                          MOV DS1302_ADDR,#88H        ;月值送1302
                                          MOV DS1302_DATA,65H
                                          LCALL WRITE
                                          MOV DS1302_ADDR,#8AH        ;星期值送1302
                                          MOV DS1302_DATA,64H
                                          LCALL WRITE

                                          MOV R0,65H
                                          LCALL DIVIDE             ;月分离送显示缓冲
                                          MOV 79H,R1
                                          MOV 49H,R1
                                          MOV 7AH,R2
                                          MOV 4AH,R2
                                          MOV R0,64H
                                          LCALL DIVIDE             ;星期分离送显示缓冲
                                          MOV 48H,week
                                          MOV 78H,week
                                WAIT5:   LCALL DISPLAY
                                          JNB P1.4,WAIT5
                                          AJMP SETG3




                                SETG4:    SETB 0BH                    ;调日时闪标志
                               GWAIT6:    LCALL DISPLAY
                                          JNB P1.1,GWAIT6
                                SETG5:    LCALL DISPLAY
                                          JNB P1.1,SETGHOUR
                                          JNB P1.3,GADDDAY
                                          JNB P1.4,SETGDDAY
                                          JNB P1.2,JUMPMONTH
                                          JNB F0,SSSDATE
                                          CLR P1.0                ;闰月,则p1.1清0,指示灯亮
                                          LJMP SETG5
                                SSSDATE:  SETB P1.0

                                          AJMP SETG5
                               JUMPMONTH: LCALL DISPLAY
                                          CLR  0BH

                                          JNB P1.2,JUMPMONTH
                                          AJMP SETG3
                                SETGHOUR: AJMP SETG6
                                SETGDDAY: AJMP GDECDAY
                              GADDDAY:    MOV   A,65H
                                          CJNE  A,#01H,FEB
                                          LCALL MMONTH             ;一月日加1
                                          AJMP  GADDDAY1

                                 FEB:    CJNE  A,#02H,MARCH
                                          MOV   R3,66H             ;二月日加1
                                          LCALL ZH                 ;BCD码转换成HEX
                                          MOV   A,R3
                                          JZ    RFEB
                                          MOV   R7,63H             ;平年二月有28天
                                          LCALL ADD1
                                          MOV   63H,A
                                          CJNE  A,#29H,FEB1
                                          MOV   63H,#01
                                  FEB1:   AJMP  GADDDAY1
                                  RFEB:   MOV   R7,63H            ;闰年二月有29天
                                          LCALL ADD1
                                          MOV   63H,A
                                          CJNE  A,#30H,FEB2
                                          MOV   63H,#01
                                  FEB2:   AJMP  GADDDAY1

                                  MARCH:  CJNE  A,#03H,APRIL
                                          LCALL MMONTH             ;三月加1
                                          AJMP  GADDDAY1

                                  APRIL:  CJNE  A,#04H,MAY
                                          LCALL LMONTH             ;四月加1
                                          AJMP  GADDDAY1

                                  MAY:    CJNE  A,#05H,JUNE
                                          LCALL MMONTH             ;五月加1
                                          AJMP  GADDDAY1

                                  JUNE:   CJNE  A,#06H,JULY
                                          LCALL LMONTH             ;六月加1
                                          AJMP  GADDDAY1

                                  JULY:   CJNE  A,#07H,AUGUST
                                          LCALL MMONTH             ;七月加1
                                          AJMP  GADDDAY1

                                  AUGUST: CJNE  A,#08H,SEPTEMBER
                                          LCALL MMONTH            ;八月加1
                                          AJMP  GADDDAY1

                                SEPTEMBER:CJNE  A,#09H,OCTOBER
                                          LCALL LMONTH             ;九月加1
                                          AJMP  GADDDAY1

                                 OCTOBER: CJNE  A,#10H,NOVEMBER
                                          LCALL MMONTH             ;十月加1
                                          AJMP  GADDDAY1

                                NOVEMBER: CJNE  A,#11H,DECEMBER
                                          LCALL LMONTH             ;十一月加1
                                          AJMP  GADDDAY1

                                DECEMBER: CJNE  A,#12H,ERROR
                                          LCALL MMONTH             ;十二月加1
                                          AJMP  GADDDAY1
                                ERROR:    AJMP  WAIT7

                             GADDDAY1:    LCALL GETWEEK
                                          LCALL  YMD                ;转换农历月日
                                          MOV DS1302_ADDR,#86H        ;日值送1302
                                          MOV DS1302_DATA,63H
                                          LCALL WRITE
                                          MOV DS1302_ADDR,#8AH        ;星期值送1302
                                          MOV DS1302_DATA,64H
                                          LCALL WRITE
                                          MOV R0,63H
                                          LCALL DIVIDE             ;日分离送显示缓冲
                                          MOV 76H,R1
                                          MOV 46H,R1
                                          MOV 77H,R2
                                          MOV 47H,R2
                                          MOV R0,64H
                                          LCALL DIVIDE             ;星期分离送显示缓冲
                                          MOV 48H,week
                                          MOV 78H,week

                                WAIT7:   LCALL DISPLAY
                                          JNB P1.3,WAIT7
                                          AJMP SETG5
  ;*****************************************************************************************
                                GDECDAY:  mov   A,65H
                                          CJNE  A,#01H,DFEB
                                          LCALL DMMONTH            ;一月日减1
                                          AJMP  GDECDAY1

                                 DFEB:    CJNE  A,#02H,DMARCH
                                          MOV   R3,66H             ;二月日减1
                                          LCALL ZH                 ;BCD码转换成HEX
                                          MOV   A,R3
                                          JZ    DRFEB
                                          MOV   R7,63H             ;平年二月有28天
                                          LCALL DEC1
                                          MOV   63H,A
                                          CJNE  A,#00H,DFEB1
                                          MOV   63H,#28H
                                  DFEB1:  AJMP  GDECDAY1
                                  DRFEB:  MOV   R7,63H            ;闰年二月有29天
                                          LCALL DEC1
                                          MOV   63H,A
                                          CJNE  A,#00H,DFEB2
                                          MOV   63H,#29H
                                  DFEB2:  AJMP  GDECDAY1

                                  DMARCH: CJNE  A,#03H,DAPRIL
                                          LCALL DMMONTH             ;三月减1
                                          AJMP  GDECDAY1

                                  DAPRIL: CJNE  A,#04H,DMAY
                                          LCALL DLMONTH             ;四月减1
                                          AJMP  GDECDAY1

                                  DMAY:   CJNE  A,#05H,DJUNE
                                          LCALL DMMONTH             ;五月减1
                                          AJMP  GDECDAY1

                                  DJUNE:  CJNE  A,#06H,DJULY
                                          LCALL DLMONTH             ;六月减1
                                          AJMP  GDECDAY1

                                  DJULY:  CJNE  A,#07H,DAUGUST
                                          LCALL DMMONTH             ;七月减1
                                          AJMP  GDECDAY1

                                  DAUGUST:CJNE  A,#08H,DSEPTEMBER
                                          LCALL DMMONTH            ;八月减1
                                          AJMP  GDECDAY1

                               DSEPTEMBER:CJNE  A,#09H,DOCTOBER
                                          LCALL DLMONTH             ;九月减1
                                          AJMP  GDECDAY1

                                 DOCTOBER:CJNE  A,#10H,DNOVEMBER
                                          LCALL DMMONTH             ;十月减1
                                          AJMP  GDECDAY1

                                DNOVEMBER:CJNE  A,#11H,DDECEMBER
                                          LCALL DLMONTH             ;十一减加1
                                          AJMP  GDECDAY1

                                DDECEMBER: CJNE  A,#12H,DERROR
                                          LCALL DMMONTH             ;十二月减1
                                          AJMP  GDECDAY1
                                DERROR:    AJMP  WAIT8

                             GDECDAY1:    LCALL GETWEEK
                                          LCALL  YMD                ;转换农历月日
                                          MOV DS1302_ADDR,#86H        ;日值送1302
                                          MOV DS1302_DATA,63H
                                          LCALL WRITE
                                          MOV DS1302_ADDR,#8AH        ;星期值送1302
                                          MOV DS1302_DATA,64H
                                          LCALL WRITE
                                          MOV R0,63H
                                          LCALL DIVIDE             ;日分离送显示缓冲
                                          MOV 76H,R1
                                          MOV 46H,R1
                                          MOV 77H,R2

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -