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

📄 yaokongrili.asm

📁 该遥控日历具有遥控器调整日历
💻 ASM
📖 第 1 页 / 共 5 页
字号:
           MOV    44H,R1
           MOV    65H,R2
           MOV    45H,R2
           MOV    A,65H
          CJNE    A,#0,WAIT10    ;按键调整中消除小时高位0
           MOV    65H,#0AH
           MOV    45H,#0AH
       WAIT10:
         LCALL    DISPLAY
           JNB    ADDNUM,WAIT10
          AJMP    SETG9

     GDECHOUR:
           MOV    R7,HOUR                ;小时减1
         LCALL    DEC1
           MOV    HOUR,A
          CJNE    A,#99H,GDECHOUR1
           MOV    HOUR,#23H
    GDECHOUR1:
           MOV    DS1302_ADDR,#84H        ;小时值送1302
           MOV    DS1302_DATA,HOUR
         LCALL    WRITE
           MOV    R0,HOUR
         LCALL    DIVIDE             ;小时分离送显示缓冲
           MOV    64H,R1
           MOV    44H,R1
           MOV    65H,R2
           MOV    45H,R2
           MOV    A,65H
          CJNE    A,#0,WAIT11    ;按键调整中消除小时高位0
           MOV    65H,#0AH
           MOV    45H,#0AH
       WAIT11:
         LCALL    DISPLAY
           JNB    DECNUM,WAIT11
          AJMP    SETG9


       SETG10:
          SETB    HOURFLASH                    ;调分时闪标志
      GWAIT12:
         LCALL    DISPLAY
           JNB    MODE,GWAIT12
       SETG11:
         LCALL    DISPLAY
           JNB    MODE,SETGOUT_1
           JNB    ADDNUM,GADDMINTUE
           JNB    DECNUM,GDECMINTUE
           JNB    DMODE,JUMPHOUR
          AJMP    SETG11
   SETGOUT_1:
          AJMP    SETGOUT
     JUMPHOUR:
         LCALL    DISPLAY
           CLR    HOURFLASH
           JNB    DMODE,JUMPHOUR
          AJMP    SETG9
   GADDMINTUE:
           MOV    R7,MINUTE                ;分加1
         LCALL    ADD1
           MOV    MINUTE,A
          CJNE    A,#60H,GADDMINTUE1
           MOV    MINUTE,#00H
  GADDMINTUE1:
           MOV    DS1302_ADDR,#82H        ;分值送1302
           MOV    DS1302_DATA,MINUTE
         LCALL    WRITE
           MOV    R0,MINUTE
         LCALL    DIVIDE             ;分分离送显示缓冲
           MOV    62H,R1
           MOV    42H,R1
           MOV    63H,R2
           MOV    43H,R2
          CJNE    A,#0,WAIT13
           MOV    63H,#0AH
           MOV    43H,#0AH


       WAIT13:
         LCALL    DISPLAY
           JNB    ADDNUM,WAIT13
          AJMP    SETG11

   GDECMINTUE:
           MOV    R7,MINUTE                ;分减1
         LCALL    DEC1
           MOV    MINUTE,A
          CJNE    A,#99H,GDECMINTUE1
           MOV    MINUTE,#59H
  GDECMINTUE1:
           MOV    DS1302_ADDR,#82H        ;分值送1302
           MOV    DS1302_DATA,MINUTE
         LCALL    WRITE
           MOV    R0,MINUTE
         LCALL    DIVIDE             ;分分离送显示缓冲
           MOV    62H,R1
           MOV    42H,R1
           MOV    63H,R2
           MOV    43H,R2
           MOV    A,63H
          CJNE    A,#0,WAIT14
           MOV    63H,#0AH
           MOV    43H,#0AH
       WAIT14:
         LCALL    DISPLAY
           JNB    DECNUM,WAIT14
          AJMP    SETG11

      SETGOUT:
         LCALL    DISPLAY
           JNB    MODE,SETGOUT
           MOV    DS1302_ADDR,#80H
           MOV    DS1302_DATA,#00H                 ;1302晶振开始振荡
         LCALL    WRITE
           MOV    DS1302_ADDR,#8EH
           MOV    DS1302_DATA,#80H                ;禁止写入1302
         LCALL    WRITE
           CLR    HOURFLASH
           CLR    DAYFLASH
           CLR    MONTHFLASH
           CLR    YEARFLASH
           CLR    CHOICE_ADJ

           CLR    ET1
           CLR    TR1                     ;关闭定时器1

          LJMP    MAIN

;***********************************
;*          整点鸣叫程序           *
;***********************************

     FENGMING:


           MOV    27H,#250
           MOV    2CH,#250
           SA:
           CPL    BP
          DJNZ    2CH,$
           MOV    2CH,#200
           CPL    BP
          DJNZ    2CH,$
           MOV    2CH,#250
          DJNZ    27H,SA
          DJNZ    2FH,FENGMING
           RET

;***********************************
;*      按键闪动调时程序           *
;***********************************
        T1_INT:
           CLR    EA
          PUSH    ACC
          PUSH    PSW
       GFLASH:
           CPL    KEEPFLASH
            JB    KEEPFLASH,GFLASH1
           MOV    60H,40H       ;显示秒
           MOV    61H,41H
           MOV    62H,42H       ;显示分
           MOV    63H,43H
           MOV    64H,44H       ;显示小时
           MOV    65H,45H
           MOV    67H,47H       ;显示总天数
           MOV    68H,48H
           MOV    69H,49H
           MOV    6AH,4AH       ;显示周次
           MOV    6BH,4BH
           MOV    70H,50H       ;显示日
           MOV    71H,51H
           MOV    72H,52H       ;显示农历日
           MOV    73H,53H
           MOV    74H,54H       ;显示农历月
           MOV    75H,55H
           MOV    76H,56H       ;显示星期
           MOV    77H,57H       ;显示月
           MOV    78H,58H
           MOV    79H,59H       ;显示年
           MOV    7AH,5AH
    GFLASHOUT:
           POP    PSW
           POP    ACC
          SETB    EA
          RETI
      GFLASH1:
            JB    YEARFLASH,GFLASH2                     ;调年闪
           MOV    79H,#0AH
           MOV    7AH,#0AH
           MOV    76H,#0AH                       ;调年时星期闪
           MOV    72H,#0AH                       ;农历月日闪烁
           MOV    73H,#0AH
           MOV    74H,#0AH
           MOV    75H,#0AH
           MOV    67H,#0AH                       ;总天数闪烁
           MOV    68H,#0AH
           MOV    69H,#0AH
           MOV    6AH,#0AH                       ;周次闪烁
           MOV    6BH,#0AH
          AJMP    GFLASHOUT
      GFLASH2:
            JB    MONTHFLASH,GFLASH3                     ;调月闪
           MOV    77H,#0AH
           MOV    78H,#0AH
           MOV    76H,#0AH                       ;调年时星期闪
           MOV    72H,#0AH                       ;农历月日闪烁
           MOV    73H,#0AH
           MOV    74H,#0AH
           MOV    75H,#0AH
           MOV    67H,#0AH                       ;总天数闪烁
           MOV    68H,#0AH
           MOV    69H,#0AH
           MOV    6AH,#0AH                       ;周次闪烁
           MOV    6BH,#0AH
          LJMP    GFLASHOUT
      GFLASH3:
            JB    DAYFLASH,GFLASH4              ;调日闪
           MOV    70H,#0AH
           MOV    71H,#0AH
           MOV    76H,#0AH                       ;调年时星期闪
           MOV    72H,#0AH                       ;农历月日闪烁
           MOV    73H,#0AH
           MOV    74H,#0AH
           MOV    75H,#0AH
           MOV    67H,#0AH                       ;总天数闪烁
           MOV    68H,#0AH
           MOV    69H,#0AH
           MOV    6AH,#0AH                       ;周次闪烁
           MOV    6BH,#0AH
          LJMP    GFLASHOUT
      GFLASH4:
            JB    HOURFLASH,GFLASH5                     ;调小时闪
           MOV    64H,#0AH
           MOV    65H,#0AH
          LJMP    GFLASHOUT
      GFLASH5:                                     ;调分钟闪
           MOV    62H,#0AH
           MOV    63H,#0AH
          LJMP    GFLASHOUT

;*****************************
;*      秒灯闪烁程序         *
;*****************************
       T0_INT:
          PUSH    ACC           ;累加器入栈保护
          PUSH    PSW           ;状态字入栈保护
           CLR    ET0           ;关T0中断允许
           CLR    TR0           ;关闭定时器T0
           MOV    A,#0B7H       ;中断响应时间同步修正
           ADD    A,TL0         ;低8位初值修正
           MOV    TL0,A         ;重装初值(低8位修正值)
           MOV    A,#3CH        ;高8位初值修正
          ADDC    A,TH0         ;
           MOV    TH0,A         ;重装初值(高8位修正值)
          SETB    TR0           ;开启定时器T0
           CLR    PSW.4
          DJNZ    SEC_FLA,INTT2OUT
           MOV    SEC_FLA,#10
           CPL    10H
            JB    10H,S1
          SETB    LED1            ; 秒指示灯闪烁
          AJMP    INTT2OUT
           S1:
           CLR    LED1
     INTT2OUT:
           POP    PSW        ;出栈
           POP    ACC
          SETB    ET0
          RETI




;*********************************
;*         写1302程序            *
;*********************************
        WRITE:
           CLR    EA
           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
          SETB    SCLK         ;送入地址在时钟上升沿有效
           NOP
           NOP
           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
          SETB    EA
           RET

;*******************************
;*         读1302程序          *
;*******************************
         READ:
           CLR    EA
           CLR    SCLK
           NOP
           NOP
          SETB    RST
           NOP
           MOV    A,DS1302_ADDR
           MOV    R4,#8
        READ1:
           RRC    A
           NOP
           MOV    IO,C
           NOP
           NOP
           NOP
          SETB    SCLK       ;送入地址在时钟上升沿有效
           NOP
           NOP
           NOP
           CLR    SCLK
           NOP
           NOP
          DJNZ    R4,READ1
           MOV    R4,#8
        READ2:
           CLR    SCLK
           NOP
           NOP
           NOP
           MOV    C,IO
           NOP
           NOP
           NOP
           NOP
           NOP       ;从ds1302中读取数据,时钟下降沿有效
           RRC    A
           NOP
           NOP
           NOP
           NOP
          SETB    SCLK
           NOP
          DJNZ    R4,READ2
           MOV    DS1302_DATA,A
           CLR    RST
          SETB    EA
           RET


;*********************************
;*           加1程序             *
;*********************************


         ADD1:
           CLR    EA
           MOV    A,R7
           ADD    A,#01H
            DA    A
          SETB    EA
           RET

;*********************************
;*           减1程序             *
;*********************************
         DEC1:
           CLR    EA
           MOV    A,R7
           ADD    A,#99H
            DA    A
          SETB    EA
           RET

;*********************************
;*          大小月加调整程序      *
;*********************************
       MMONTH:
           CLR    EA
           MOV    R7,TIME_DAY              ;大月日加1
         LCALL    ADD1
           MOV    TIME_DAY,A
          CJNE    A,#32H,MGOOUT
           MOV    TIME_DAY,#01H
       MGOOUT:
          SETB    EA
           RET

       LMONTH:
           CLR    EA
           MOV    R7,TIME_DAY              ;小月日加1
         LCALL    ADD1

⌨️ 快捷键说明

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