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

📄 yaokongrili.asm

📁 该遥控日历具有遥控器调整日历
💻 ASM
📖 第 1 页 / 共 5 页
字号:
        GWAIT:
         LCALL    DISPLAY
           JNB    MODE,GWAIT
        SETG1:
         LCALL    DISPLAY
           JNB    MODE,SETGMON
           JNB    ADDNUM,GADDYEAR
           JNB    DECNUM,GDECYEAR
           JNB    DMODE,SETGEXIT
           MOV    R3,TIME_YEAR
         LCALL    ZH                      ;判断当前年是否为闰年
           MOV    A,B
           JNZ    SET_OFF_RNLED
           CLR    RNLED
          AJMP    SET_RYLED
SET_OFF_RNLED:
          SETB    RNLED
    SET_RYLED:
           JNB    F0,SSSYEAR
           CLR    RYLED                 ;闰月,则p1.1清0,指示灯亮
          LJMP    SETG1
      SSSYEAR:
          SETB    RYLED
          AJMP    SETG1

      SETGMON:
          AJMP    SETG2
     SETGEXIT:
         LCALL    DISPLAY
           JNB    DMODE,SETGEXIT
          LJMP    SETGOUT
     GADDYEAR:
           MOV    R7,TIME_YEAR               ;年加1
         LCALL    ADD1
           MOV    TIME_YEAR,A
    GADDYEAR1:
         LCALL    GETWEEK            ;年加1同时换算出星期
         LCALL    YMD                ;转换农历月日
         LCALL    ADJ_TOTAL          ;转总天数,周次处理程序
         LCALL    DX_MONTH           ;转大小月判断程序
           MOV    DS1302_ADDR,#8CH   ;年值送1302
           MOV    DS1302_DATA,TIME_YEAR
         LCALL    WRITE
           MOV    R0,TIME_YEAR
         LCALL    DIVIDE             ;年分离送显示缓冲
           MOV    79H,R1
           MOV    59H,R1
           MOV    7AH,R2
           MOV    5AH,R2
           MOV    76H,week           ;星期分离送显示缓冲
           MOV    56H,week

        WAIT1:
         LCALL    DISPLAY
           JNB    ADDNUM,WAIT1
          AJMP    SETG1
     GDECYEAR:
           MOV    R7,TIME_YEAR       ;年减1
         LCALL    DEC1
           MOV    TIME_YEAR,A
         LCALL    GETWEEK            ;年减1同时换算出星期
         LCALL    YMD                ;转换农历月日
         LCALL    ADJ_TOTAL          ;转总天数,周次处理程序
         LCALL    DX_MONTH           ;转大小月判断程序
           MOV    DS1302_ADDR,#8CH        ;年值送1302
           MOV    DS1302_DATA,TIME_YEAR
         LCALL    WRITE
           MOV    R0,TIME_YEAR
         LCALL    DIVIDE               ;年分离送显示缓冲
           MOV    79H,R1
           MOV    59H,R1
           MOV    7AH,R2
           MOV    5AH,R2
           MOV    76H,week           ;星期分离送显示缓冲
           MOV    56H,week
        WAIT2:
         LCALL    DISPLAY
           JNB    DECNUM,WAIT2
          AJMP    SETG1


        SETG2:
          SETB    YEARFLASH                ;调月时闪标志
       GWAIT3:
         LCALL    DISPLAY
           JNB    MODE,GWAIT3
        SETG3:
         LCALL    DISPLAY
           JNB    MODE,SETGDAY
           JNB    ADDNUM,GADDMONTH
           JNB    DECNUM,GDECMONTH
           JNB    DMODE,JUMPYEAR
           JNB    F0,SSSMONTH
           CLR    RYLED                ;闰月,则p1.1清0,指示灯亮
          LJMP    SETG3
     SSSMONTH:
          SETB    RYLED
          AJMP    SETG3
     JUMPYEAR:
         LCALL    DISPLAY
           CLR    YEARFLASH
           JNB    DMODE,JUMPYEAR
          AJMP    SETG1
      SETGDAY:
          AJMP    SETG4
    GADDMONTH:
           MOV    R7,TIME_MONTH               ;月加1
         LCALL    ADD1
           MOV    TIME_MONTH,A
          CJNE    A,#13H,GADDMONTH1
           MOV    TIME_MONTH,#01H
    GADDMONTH1:
         LCALL    GETWEEK             ;月加1同时换算出星期
         LCALL    YMD                ;转换农历月日
         LCALL    ADJ_TOTAL          ;转总天数,周次处理程序
         LCALL    DX_MONTH           ;转大小月判断程序
           MOV    DS1302_ADDR,#88H        ;月值送1302
           MOV    DS1302_DATA,TIME_MONTH
         LCALL    WRITE
           MOV    R0,TIME_MONTH
         LCALL    DIVIDE             ;月分离送显示缓冲
           MOV    77H,R1
           MOV    57H,R1
           MOV    78H,R2
           MOV    58H,R2
           MOV    76H,week
           MOV    56H,week
           MOV    A,78H
          CJNE    A,#0,WAIT4    ;按键调整中消除月高位0
           MOV    78H,#0AH
           MOV    58H,#0AH

         WAIT4:
         LCALL    DISPLAY
           JNB    ADDNUM,WAIT4
          AJMP    SETG3

    GDECMONTH:
           MOV    R7,TIME_MONTH               ;月减1
         LCALL    DEC1
           MOV    TIME_MONTH,A
          CJNE    A,#00H,GDECMONTH1
           MOV    TIME_MONTH,#12H
    GDECMONTH1:
         LCALL    GETWEEK             ;月减1同时换算出星期
         LCALL    YMD                ;转换农历月日
         LCALL    ADJ_TOTAL          ;转总天数,周次处理程序
         LCALL    DX_MONTH           ;转大小月判断程序
           MOV    DS1302_ADDR,#88H        ;月值送1302
           MOV    DS1302_DATA,TIME_MONTH
         LCALL    WRITE
           MOV    R0,TIME_MONTH
         LCALL    DIVIDE             ;月分离送显示缓冲
           MOV    77H,R1
           MOV    57H,R1
           MOV    78H,R2
           MOV    58H,R2
           MOV    76H,week
           MOV    56H,week
           MOV    A,78H
          CJNE    A,#0,WAIT5    ;按键调整中消除月高位0
           MOV    78H,#0AH
           MOV    58H,#0AH
        WAIT5:
         LCALL    DISPLAY
           JNB    DECNUM,WAIT5
          AJMP    SETG3


         SETG4:
          SETB    MONTHFLASH                    ;调日时闪标志
        GWAIT6:
         LCALL    DISPLAY
           JNB    MODE,GWAIT6
         SETG5:
         LCALL    DISPLAY
           JNB    MODE,SETGHOUR
           JNB    ADDNUM,GADDDAY
           JNB    DECNUM,SETGDDAY
           JNB    DMODE,JUMPMONTH
           JNB    F0,SSSDATE
           CLR    RYLED                ;闰月,则p1.1清0,指示灯亮
          LJMP    SETG5
      SSSDATE:
          SETB    RYLED
          AJMP    SETG5
    JUMPMONTH:
         LCALL    DISPLAY
           CLR    MONTHFLASH
           JNB    DMODE,JUMPMONTH
          AJMP    SETG3
     SETGHOUR:
          AJMP    SETG6
     SETGDDAY:
          AJMP    GDECDAY
      GADDDAY:
           MOV    A,TIME_MONTH
          CJNE    A,#01H,FEB
         LCALL    MMONTH             ;一月日加1
          AJMP    GADDDAY1
          FEB:
          CJNE    A,#02H,MARCH
           MOV    R3,TIME_YEAR       ;二月日加1
         LCALL    ZH                 ;BCD码转换成HEX,判断是否为闰年
           MOV    A,R3
            JZ    RFEB
           MOV    R7,TIME_DAY             ;平年二月有28天
         LCALL    ADD1
           MOV    TIME_DAY,A
          CJNE    A,#29H,FEB1
           MOV    TIME_DAY,#01
         FEB1:
          AJMP    GADDDAY1
         RFEB:
           MOV    R7,TIME_DAY            ;闰年二月有29天
         LCALL    ADD1
           MOV    TIME_DAY,A
          CJNE    A,#30H,FEB2
           MOV    TIME_DAY,#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                ;转换农历月日
         LCALL    ADJ_TOTAL          ;转总天数,周次处理程序
         LCALL    DX_MONTH           ;转大小月判断程序
           MOV    DS1302_ADDR,#86H        ;日值送1302
           MOV    DS1302_DATA,TIME_DAY
         LCALL    WRITE
           MOV    R0,TIME_DAY
         LCALL    DIVIDE             ;日分离送显示缓冲
           MOV    70H,R1
           MOV    50H,R1
           MOV    71H,R2
           MOV    51H,R2
           MOV    76H,week
           MOV    56H,week
           MOV    A,71H
          CJNE    A,#0,WAIT7    ;按键调整中消除日高位0
           MOV    71H,#0AH
           MOV    51H,#0AH
        WAIT7:
         LCALL    DISPLAY
           JNB    ADDNUM,WAIT7
          AJMP    SETG5

;**************** 日减1***********************************
       GDECDAY:
           mov    A,TIME_MONTH
          CJNE    A,#01H,DFEB
         LCALL    DMMONTH            ;一月日减1
          AJMP    GDECDAY1
          DFEB:
          CJNE    A,#02H,DMARCH
           MOV    R3,TIME_YEAR             ;二月日减1
         LCALL    ZH                 ;BCD码转换成HEX
           MOV    A,R3
            JZ    DRFEB
           MOV    R7,TIME_DAY          ;平年二月有28天
         LCALL    DEC1
           MOV    TIME_DAY,A
          CJNE    A,#00H,DFEB1
           MOV    TIME_DAY,#28H
        DFEB1:
          AJMP    GDECDAY1
        DRFEB:
           MOV    R7,TIME_DAY            ;闰年二月有29天
         LCALL    DEC1
           MOV    TIME_DAY,A
          CJNE    A,#00H,DFEB2
           MOV    TIME_DAY,#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                ;转换农历月日
         LCALL    ADJ_TOTAL          ;转总天数,周次处理程序
         LCALL    DX_MONTH           ;转大小月判断程序
           MOV    DS1302_ADDR,#86H        ;日值送1302
           MOV    DS1302_DATA,TIME_DAY
         LCALL    WRITE
           MOV    R0,TIME_DAY
         LCALL    DIVIDE             ;日分离送显示缓冲
           MOV    70H,R1
           MOV    50H,R1
           MOV    71H,R2
           MOV    51H,R2
           MOV    76H,week
           MOV    56H,week
           MOV    A,71H
          CJNE    A,#0,WAIT8    ;按键调整中消除日高位0
           MOV    71H,#0AH
           MOV    51H,#0AH
         WAIT8:
         LCALL    DISPLAY
           JNB    DECNUM,WAIT8
          AJMP    SETG5



         SETG6:
          SETB    DAYFLASH                    ;调小时时闪标志
        GWAIT9:
         LCALL    DISPLAY
           JNB    MODE,GWAIT9
         SETG9:
         LCALL    DISPLAY
           JNB    MODE,SETG10_10
           JNB    ADDNUM,GADDHOUR
           JNB    DECNUM,GDECHOUR
           JNB    DMODE,JUMPDATE
          AJMP    SETG9
    SETG10_10:
          AJMP   SETG10
     JUMPDATE:
         LCALL    DISPLAY
           CLR    DAYFLASH
           JNB    DMODE,JUMPDATE
          AJMP    SETG5
     GADDHOUR:
           MOV    R7,HOUR                ;小时加1
         LCALL    ADD1
           MOV    HOUR,A
          CJNE    A,#24H,GADDHOUR1
           MOV    HOUR,#00H
    GADDHOUR1:
           MOV    DS1302_ADDR,#84H        ;小时值送1302
           MOV    DS1302_DATA,HOUR
         LCALL    WRITE
           MOV    R0,HOUR
         LCALL    DIVIDE             ;小时分离送显示缓冲
           MOV    64H,R1

⌨️ 快捷键说明

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