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

📄 1302.asm

📁 万年历程序 从1302中读出的数据放在67H(高两位年)66H(低两位年)65H(月)64H(星期)63H(日) 62H(小时)61H(分钟)60H(秒)57H(农历月)56H(农历日) 显示
💻 ASM
📖 第 1 页 / 共 5 页
字号:

                  ;;;;;;;;;;;;;;;;;
                  ;;闪动调时程序;;
                  ;;;;;;;;;;;;;;;;
               INTT1:    PUSH ACC
                           PUSH PSW
                 GFLASH:CPL 0FH
                           JB 0FH,GFLASH1
                           MOV 7CH,4CH  ;全部显示
                           MOV 7BH,4BH
                           MOV 7AH,4AH
                           MOV 79H,49H
                           MOV 78H,48H
                           MOV 77H,47H
                           MOV 76H,46H
                           MOV 75H,45H
                           MOV 74H,44H
                           MOV 73H,43H
                           MOV 72H,42H
                           MOV 71H,41H
                           MOV 70H,40H
             GFLASHOUT:POP PSW
                           POP ACC
                           RETI
             GFLASH1:   JB 0AH,GFLASH2 ;调年闪
                           MOV 7CH,#0AH
                           MOV 7BH,#0AH
                           AJMP GFLASHOUT
             GFLASH2:   JB 0BH,GFLASH3 ;调月闪
                           MOV 7AH,#0AH
                           MOV 79H,#0AH
                           AJMP GFLASHOUT
             GFLASH3:   JB 0CH,GFLASH4 ;调日闪
                           MOV 77H,#0AH
                           MOV 76H,#0AH
                           AJMP GFLASHOUT
             GFLASH4:   JB 0DH,GFLASH5 ;调星期闪
                           MOV 78H,#0AH
                           AJMP GFLASHOUT
             GFLASH5:   JB 0EH,GFLASH6 ;调小时闪
                           MOV 75H,#0AH
                           MOV 74H,#0AH
                           AJMP GFLASHOUT
             GFLASH6:   MOV 73H,#0AH  ;调分钟闪
                           MOV 72H,#0AH
                           AJMP GFLASHOUT
                    ;;;;;;;;;;;;;;;;;;;;
                    ;;;加一程序;;;;;;;;;
                    ;;;;;;;;;;;;;;;;;;;;
                  ADD1:  MOV A,R7
                           ADD A,#01H
                           DA A
                           RET
                  ;;;;;;;;;;;;;;;;;;;;;
                  ;;;分离程序;;;;;;;;;;
                  ;;;;;;;;;;;;;;;;;;;;;
                 DIVIDE:  MOV A,R0
                           ANL A,#0FH
                           MOV R1,A
                           MOV A,R0
                           SWAP A
                           ANL A,#0FH
                           MOV R2,A
                           RET
              ;;;;;;;;;;;;;;;;;;;;;;;;;
              ;;;;;写1302程序;;;;;;;;;;
              ;;;;;;;;;;;;;;;;;;;;;;;;;
                WRITE:   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
                           NOP
                           NOP
                           NOP
                           SETB SCLK
                           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
                           RET
                ;;;;;;;;;;;;;;;;;;;;;;;;
                ;;;;;;读1302程序;;;;;;;;
                ;;;;;;;;;;;;;;;;;;;;;;;;
                READ:   CLR SCLK
                           NOP
                           NOP
                           SETB RST
                           NOP
                           MOV A,DS1302_ADDR
                           MOV R4,#8
                READ1:  RRC A    ;送地址给1302
                           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    ;从1302中读出数据
                           NOP
                           NOP
                           MOV C,IO
                           NOP
                           NOP
                           NOP
                           NOP
                           NOP
                           RRC A
                           NOP
                           NOP
                           NOP
                           NOP
                           SETB SCLK
                           NOP
                           DJNZ R4,READ2
                           MOV DS1302_DATA,A
                           CLR RST
                           RET
                 ;;;;;;;;;;;;;;;;;;;;;;;;;;;
                 ;;;;BCD码转换为10进制程序;;
                 ;;;;;;;;;;;;;;;;;;;;;;;;;;;
               BCD_10:   MOV A,R0
                           ANL A,#0FH
                           MOV R1,A  ;高位×10, 加低位
                           MOV A,R0
                           SWAP A
                           ANL A,#0FH
                           MOV B,#10
                           MUL AB
                           ADD A,R1
                           MOV R0,A
                           RET
                ;;;;;;;;;;;;;;;;;;;;;;;;;
                ;;;;查一年数据程序;;;;;;;
                ;;;;;;;;;;;;;;;;;;;;;;;;;
          CHECKMONTH: LCALL BCD_10
                           MOV A,R0
                           MOV B,#04
                           MUL AB
                           MOV R1,A
                           MOV DPTR,#TAB
                           MOVC A,@A+DPTR
                           MOV R7,A   ;第一字节送R7
                           INC R1
                           MOV A,R1
                           MOVC A,@A+DPTR
                           MOV R6,A  ;第二字节送R6
                           INC R1
                           MOV A,R1
                           MOVC A,@A+DPTR
                           MOV R5,A   ;第三字节送R6
                           INC R1
                           MOV A,R1
                           MOVC A,@A+DPTR
                           MOV R4,A  ;第四字节送R4
                           RET


                        ;;;;;;;;;;;;;;;;;;;;
                        ;;;;;自动更新农历;;;
                        ;;;;;;;;;;;;;;;;;;;;
              GENGXIAN:    MOV R2,#00H
	                   MOV R3,#00H
                           MOV A,month
                           CJNE A,#01H,GM2
                           MOV R0,day   ;当前月为一月
                           LCALL BCD_10 ;当前日转换为10进制,送R2
                           MOV A,R0
                           MOV R2,A
                           AJMP TIAOZHENG1
                   GM2:  CJNE A,#02H,GM3
                           MOV R0,day    ;当前月为二月
                           LCALL BCD_10 ;;当前日转换为10进制,
                           MOV A,R0      ;再加31,送R2
                           ADD A,#31
                           MOV R2,A
                           AJMP TIAOZHENG1
                    GM3: CJNE A,#03H,GM4
                           MOV R0,day    ;当前月为三月
                           LCALL BCD_10  ;当前日转换为10进制,
                           MOV A,R0      ;再加59,送R2
                           ADD A,#59
                           MOV R2,A
                           AJMP TIAOZHENG1
                   GM4:  CJNE A,#04H,GM5
                           MOV R0,day     ;当前月为四月
                           LCALL BCD_10   ;;当前日转换为10进制,
                           MOV A,R0       ;再加90,送R2
                           ADD A,#90
                           MOV R2,A
                           AJMP TIAOZHENG1
                    GM5: CJNE A,#05H,GM6
                           MOV R0,day     ;当前月为五月
                           LCALL BCD_10   ;当前日转换为10进制,
                           MOV A,R0       ;再加120,送R2
                           ADD A,#120
                           MOV R2,A
                           AJMP TIAOZHENG1
                    GM6: CJNE A,#06H,GM7
                           MOV R0,day     ;当前月为六月
                           LCALL BCD_10   ;当前日转换为10进制,
                           MOV A,R0       ;再加151,送R2
                           ADD A,#151
                           MOV R2,A
                           AJMP TIAOZHENG1
                    GM7: CJNE A,#07H,GM8
                           MOV R0,day     ;当前月位七月
                           LCALL BCD_10   ;当前日转换为10进制,
                           MOV A,R0       ;再加181,送R2
                           ADD A,#181
                           MOV R2,A
                           AJMP TIAOZHENG1
                     GM8:CJNE A,#08H,GM9
                           MOV R0,day     ;当前月为八月
                           LCALL BCD_10   ;当前日转换为10进制,
                           MOV A,R0       ;再加212,送R2
                           ADD A,#212
                           MOV R2,A
                           AJMP TIAOZHENG1
                     GM9:CJNE A,#09H,GM10
                           MOV R0,day    ;当前月为九月
                           LCALL BCD_10  ;当前日转换为10进制,
                           MOV A,R0      ;再加243
                           CLR C
                           ADD A,#243
                           JC GGG
                           MOV R2,A       ;A没有溢出,送R2
                           AJMP TIAOZHENG1
                   GGG:  MOV R3,#0FFH   ;A溢出,A加一送R2
                           INC A          ;R3中送#0ffh
                           MOV R2,A
                           AJMP TIAOZHENG1
                   GM10: CJNE A,#10H,GM11
                           MOV R0,day    ;当前月为10月
                           LCALL BCD_10   ;当前日转换为10进制,
                           MOV A,R0       ;再加18,送R2
                           ADD A,#18      ;R3中送#0FFH
                           MOV R2,A
                           MOV R3,#0FFH
                           AJMP TIAOZHENG1
                    GM11:CJNE A,#11H,GM12
                           MOV R0,day    ;当前月为11月
                           LCALL BCD_10  ;当前日转换为10进制,
                           MOV A,R0      ;再加49,送R2
                           ADD A,#49     ;R3中送#0FFH
                           MOV R2,A
                           MOV R3,#0FFH
                           AJMP TIAOZHENG1
                   GM12: MOV R0,day     ;当前月为12月
                           LCALL BCD_10   ;当前日转换为10进制,
                           MOV A,R0       ;再加79,送R2
                           ADD A,#79      ;R3中送#0FFH
                           MOV R2,A

⌨️ 快捷键说明

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