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

📄 万年历最终版.asm

📁 用89S52实现的万年历
💻 ASM
📖 第 1 页 / 共 4 页
字号:
                                          LCALL DIVIDE
                                          MOV 7BH,R1
                                          MOV 4BH,R1
                                          MOV 7CH,R2
                                          MOV 4CH,R2
                                          MOV 78H,WEEK
                                          MOV 48H,WEEK
                                          MOV R0,MONTH                ;月分离,送显示缓存
                                          LCALL DIVIDE
                                          MOV 79H,R1
                                          MOV 49H,R1
                                          MOV 7AH,R2
                                          MOV 4AH,R2
                                          MOV R0,DAY                ;日分离,送显示缓存
                                          LCALL DIVIDE
                                          MOV 76H,R1
                                          MOV 46H,R1
                                          MOV 77H,R2
                                          MOV 47H,R2
                                          MOV R0,HOUR                ;小时分离,送显示缓存
                                          LCALL DIVIDE
                                          MOV 74H,R1
                                          MOV 44H,R1
                                          MOV 75H,R2
                                          MOV 45H,R2
                                          MOV R0,MINTUE                ;分分离,送显示缓存
                                          LCALL DIVIDE
                                          MOV 72H,R1
                                          MOV 42H,R1
                                          MOV 73H,R2
                                          MOV 43H,R2
                                           MOV R0,SECOND                ;秒分离,送显示缓存
                                          LCALL DIVIDE
                                          MOV 70H,R1
                                          MOV 40H,R1
                                          MOV 71H,R2
                                          MOV 41H,R2
                                          LCALL DISPLAY
                                          LCALL GENGXIAN           ;更新农历程序
                                          JNB P1.0,SETG
                                          ;JNB F0,SSS
                                          ;CLR P1.3                 ;闰月,则p1.3清0,指示灯亮
                                          LJMP MAIN1
                                ;SSS:      ;SETB P1.3                 ;非闰月,则p1.3置位,指示灯灭
                                          ;LJMP MAIN1
                                ;*******************************
                                ;*       公历设置程序          *
                                ;*******************************
                                   SETG: 
                                          CLR 2EH.1     ;清秒闪 
                                          MOV 3AH,#0H   ;清秒闪记数
				   	  
				   	                      SETB TR1
                                          SETB ET1
                                          CLR 08H
                                          CLR 09H
                                          CLR 0AH
                                          CLR 0BH
                                          CLR 0CH
                                          CLR 0DH
                                          CLR 0EH
                                          CLR 0FH
                                          MOV DS1302_ADDR,#8EH
                                          MOV DS1302_DATA,#00H            ;允许写1302
                                          LCALL WRITE
                                          MOV DS1302_ADDR,#80H
                                          MOV DS1302_DATA,#80H            ;1302停止振荡
                                          LCALL WRITE
					  					  JB 2FH.4,GWAIT
					  					  JB 2FH.1,SETG2
					  					  JB 2FH.0,ZHUAN1
					  					  AJMP FLAG0
								  ZHUAN1: LJMP SETG8
				    			FLAG0:	  AJMP SETGOUT
                                 GWAIT:   LCALL DISPLAY
                                          JNB P1.0,GWAIT
                                 SETG1:   LCALL DISPLAY
                                          JNB P1.0,ZHUAN2
					  					  AJMP FLAG2
								ZHUAN2:   LJMP SETGOUT
                        	FLAG2:    JNB P1.1,GADDYEAR
					  					  JNB P1.2,GDECYEAR
					  					  JNB P1.3,ZHUAN3
					  					  AJMP FLAG3
								ZHUAN3:   LJMP SETGOUT
                       		 FLAG3:
                                          AJMP SETG1
								GDECYEAR: MOV R7,66H              ;年-1
                                          LCALL DEC1
                                          CJNE A,#0FFH,GDECYEAR1
                                          MOV  A,#99H
										  
				 				GDECYEAR1:
										 
					  					  ADD A,#00H
					  					  DA A
					  					  MOV 66H,A
					  					  AJMP GADDYEAR1
                             GADDYEAR:    MOV R7,66H                ;年加1
                                          LCALL ADD1
                                          MOV 66H,A
                                          CJNE A,#0FFH,GADDYEAR1
                                          MOV 66H,#01H
                             GADDYEAR1:   MOV DS1302_ADDR,#8CH        ;年值送1302
                                          MOV DS1302_DATA,66H
                                          LCALL WRITE
                                          MOV R0,66H
                                          LCALL DIVIDE             ;年分离送显示缓冲
                                          MOV 4BH,R1
                                          MOV 7BH,R1
                                          MOV 4CH,R2
                                          MOV 7CH,R2
                                WAITT1:   LCALL DISPLAY
                                          JNB P1.2,WAITT1
					  					  JNB P1.1,WAITT1
                                          AJMP SETG1
                                SETG2:    SETB 0AH                    ;调月时闪标志
                               GWAIT2:    LCALL DISPLAY
                                          JNB P1.0,GWAIT2
                                SETG3:    LCALL DISPLAY
                                          JNB P1.0,SETG4
                                          JNB P1.1,GADDMONTH
					 					   JNB P1.2,GDECMONTH
					  					  JNB P1.3,ZHUAN4
					  					  AJMP FLAG4
								ZHUAN4:   LJMP SETGOUT
                        	       FLAG4:
                                          AJMP SETG3
								GDECMONTH:MOV R7,65H                
                                          LCALL DEC1
                                          MOV 65H,A
                                          CJNE A,#0H,GADDMONTH1
                                          MOV 65H,#12H
					  					  AJMP GADDMONTH1
                             GADDMONTH:   MOV R7,65H                ;月加1
                                          LCALL ADD1
                                          MOV 65H,A
                                          CJNE A,#13H,GADDMONTH1
                                          MOV 65H,#01H
                             GADDMONTH1:  MOV DS1302_ADDR,#88H        ;月值送1302
                                          MOV DS1302_DATA,65H
                                          LCALL WRITE
                                          MOV R0,65H
                                          LCALL DIVIDE             ;月分离送显示缓冲
                                          MOV 79H,R1
                                          MOV 49H,R1
                                          MOV 7AH,R2
                                          MOV 4AH,R2
                                WAITT2:   LCALL DISPLAY
                                          JNB P1.2,WAITT2
					  					  JNB P1.1,WAITT2
                                          AJMP SETG3
                                SETG4:    SETB 0BH                    ;调日时闪标志
                               GWAIT4:    LCALL DISPLAY
                                          JNB P1.0,GWAIT4
                                SETG5:    LCALL DISPLAY
                                          JNB P1.0,SETG6
                                          JNB P1.1,GADDDAY
					  					  JNB P1.2,GDECDAY
					  					  JNB P1.3,ZHUAN5
					  					  AJMP FLAG5
								ZHUAN5:   LJMP SETGOUT
                        	FLAG5:
                                          AJMP SETG5
								GDECDAY:  MOV R7,63H                
                                          LCALL DEC1
                                          MOV 63H,A
                                          CJNE A,#00H,GADDDAY1
                                          MOV 63H,#31H
					  					  AJMP GADDDAY1
								GADDDAY:  MOV R7,63H                ;日加1
                                          LCALL ADD1
                                          MOV 63H,A
                                          CJNE A,#32H,GADDDAY1
                                          MOV 63H,#01H
                             GADDDAY1:    MOV DS1302_ADDR,#86H        ;日值送1302
                                          MOV DS1302_DATA,63H
                                          LCALL WRITE
                                          MOV R0,63H
                                          LCALL DIVIDE             ;日分离送显示缓冲
                                          MOV 76H,R1
                                          MOV 46H,R1
                                          MOV 77H,R2
                                          MOV 47H,R2
                                WAITT3:   LCALL DISPLAY
                                          JNB P1.2,WAITT3
					  					  JNB P1.1,WAITT3
                                          AJMP SETG5
                                SETG6:    SETB 0CH                    ;调星期时闪标志
                               GWAIT6:    LCALL DISPLAY
                                          JNB P1.0,GWAIT6
                                SETG7:    LCALL DISPLAY
                                          JNB P1.0,ZHUAN6
										  
					  					  AJMP FLAG6
								ZHUAN6:   LJMP SETGOUT
                                 FLAG6:
                                          JNB P1.1,GADDWEEK
				 	  					  JNB P1.2,GDECWEEK
					  					  JNB P1.3,ZHUAN7
					  					  AJMP FLAG7
								ZHUAN7:   LJMP SETGOUT
                        FLAG7:
                                          AJMP SETG7
							GDECWEEK:     MOV R7,64H                ;星期-1
                                          LCALL DEC1
                                          MOV 64H,A
                                          CJNE A,#00H,GADDWEEK1
                                          MOV 64H,#07H
					  					  AJMP GADDWEEK1
                             GADDWEEK:    MOV R7,64H                ;星期加1
                                          LCALL ADD1
                                          MOV 64H,A
                                          CJNE A,#08H,GADDWEEK1
                                          MOV 64H,#01H
                             GADDWEEK1:   MOV DS1302_ADDR,#8AH        ;星期值送1302
                                          MOV DS1302_DATA,64H
                                          LCALL WRITE
                                          MOV R0,64H
                                          LCALL DIVIDE             ;星期分离送显示缓冲
                                          MOV 48H,R1
                                          MOV 78H,R1
                                WAITT4:   LCALL DISPLAY
                                          JNB P1.1,WAITT4
					  					  JNB P1.2,WAITT4

                                          AJMP SETG7
                                SETG8:    SETB 0DH                    ;调小时时闪标志
                               GWAIT8:    LCALL DISPLAY
                                          JNB P1.0,GWAIT8
                                SETG9:    LCALL DISPLAY
                                          JNB P1.0,SETG10
                                          JNB P1.1,GADDHOUR
					  					  JNB P1.2,GDECHOUR
					  					  JNB P1.3,ZHUAN8
					  					  AJMP FLAG8
								ZHUAN8:	  LJMP SETGOUT
                        	FLAG8:
                                          AJMP SETG9
								GDECHOUR: MOV R7,62H                ;小时加1
                                          LCALL DEC1
                                          MOV 62H,A
                                          CJNE A,#0FFH,GADDHOUR11	
					  					  MOV A,#23H
	                  	  GADDHOUR11:     ADD A,#00H		    
					  					  DA A
										  					  
                                          MOV 62H,A
					  					  AJMP GADDHOUR1
                             GADDHOUR:    MOV R7,62H                ;小时加1
                                          LCALL ADD1

⌨️ 快捷键说明

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