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

📄 万年历最终版.asm

📁 用89S52实现的万年历
💻 ASM
📖 第 1 页 / 共 4 页
字号:
                                          MOV 62H,A
                                          CJNE A,#24H,GADDHOUR1
                                          MOV 62H,#00H
                             GADDHOUR1:   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,R2
                                WAITT5:   LCALL DISPLAY
                                          JNB P1.2,WAITT5
					 					  JNB P1.1,WAITT5
                                          AJMP SETG9
                                SETG10:   SETB 0EH                    ;调分时闪标志
                               GWAIT10:   LCALL DISPLAY
                                          JNB P1.0,GWAIT10
                                SETG11:   LCALL DISPLAY
                                          JNB P1.0,SETGOUT
                                          JNB P1.1,GADDMINTUE
				          				  JNB P1.2,GDECMINTUE
				          				  JNB P1.3,SETGOUT
                                          AJMP SETG11
						   GDECMINTUE:    MOV R7,61H                ;分加1
                                          LCALL DEC1
                                           
                                          CJNE A,#0FFH,GADDMINTUE11
										 
                                          MOV 61H,#59H
					  					  AJMP GADDMINTUE1
			     			GADDMINTUE11:ADD A,#00H
					  					  DA A
					  					  MOV 61H,A
					  					  AJMP GADDMINTUE1
                           GADDMINTUE:    MOV R7,61H                ;分加1
                                          LCALL ADD1
                                          MOV 61H,A
                                          CJNE A,#60H,GADDMINTUE1
                                          MOV 61H,#00H
                             GADDMINTUE1: MOV DS1302_ADDR,#82H        ;分值送1302
                                          MOV DS1302_DATA,61H
                                          LCALL WRITE
                                          MOV R0,61H
                                          LCALL DIVIDE             ;分分离送显示缓冲
                                          MOV 72H,R1
                                          MOV 42H,R1
                                          MOV 73H,R2
                                          MOV 43H,R2
                                WAITT6:   LCALL DISPLAY
                                          JNB P1.2,WAITT6
					  					  JNB P1.1,WAITT6
                                          AJMP SETG11
                                SETGOUT:  LCALL DISPLAY
                                          JNB P1.0,SETGOUT
					  					  JNB P1.3,SETGOUT
                                          ;LCALL GENGXIN
                                          MOV DS1302_ADDR,#80H
                                          MOV DS1302_DATA,#00H                 ;1302晶振开始振荡
                                          LCALL WRITE
                                          MOV DS1302_ADDR,#8EH
                                          MOV DS1302_DATA,#80H                ;禁止写入1302
                                          LCALL WRITE
                                          CLR 08H
                                          CLR 09H
                                          CLR 0AH
                                          CLR 0BH
                                          CLR 0CH
                                          CLR 0DH
                                          CLR 0EH
                                          CLR 0FH
                                          CLR ET1
                                          CLR TR1                      ;关闪中断
                                          LJMP MAIN1
                                ;***********************************
                                ;*          闪动调时程序           *
                                ;***********************************
                                   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:  JNB 2FH.4,GFLASH2
                                          JB 0AH,GFLASH2                     ;调年闪
                                          MOV 7CH,#0FFH
                                          MOV 7BH,#0FFH
                                          AJMP GFLASHOUT

								GFLASH2:  JNB 2FH.1,GFLASH5
                                          JB 0BH,GFLASH3                     ;调月闪
                                          MOV 7AH,#0FFH
                                          MOV 79H,#0FFH
                                          AJMP GFLASHOUT
                                GFLASH3:  JB 0CH,GFLASH4                     ;调日闪
                                          MOV 77H,#0FFH
                                          MOV 76H,#0FFH
                                          AJMP GFLASHOUT
                                GFLASH4:  JB 0DH,GFLASH5                     ;调星期闪
                                          MOV 78H,#0FFH
                                          AJMP GFLASHOUT
			 				GFLASH5:	  JNB 2FH.0,GFLASHOUT
                                          JB 0EH,GFLASH6                     ;调小时闪
                                          MOV 75H,#0FFH
                                          MOV 74H,#0FFH
                                          AJMP GFLASHOUT
                                GFLASH6:
					  					  MOV 73H,#0FFH                       ;调分闪
                                          MOV 72H,#0FFH
                                          AJMP GFLASHOUT
                            ;*********************************
                            ;*           加1程序             *
                            ;*********************************
                                   ADD1:  MOV A,R7
                                          ADD A,#01H
                                          DA A
                                          RET
								DEC1:     MOV A,R7
				          				  JZ NEXTO1
					  					  CLR C
                                          SUBB A,#01H
					  					  JNB PSW.6,NEXTO3
					  					  CLR C
					  					  SUBB A,#06H
								NEXTO3:	  ADD A,#00H
                                          DA A
					  					  AJMP NEXTO2
								   NEXTO1:MOV A,#0FFH
                                   NEXTO2: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
                                          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
                                          RRC A
                                          NOP
                                          NOP
                                          NOP
                                          NOP
                                          SETB SCLK
                                          NOP
                                          DJNZ R4,READ2
                                          MOV DS1302_DATA,A
                                          CLR RST
                                          RET
                              ;*********************************
                              ;*    BCD码转换为十进制程序      *
                              ;*********************************
                                 BCD_10:  MOV A,R0
                                          ANL A,#0FH
                                          MOV R1,A                   ;高位*10,加低位

⌨️ 快捷键说明

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