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

📄 table.asm

📁 此款LED 数码万年历采用Holtek 公司开发的HT45R02 和HT38A5 微控制器设计
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;;WAN NIAN LI TABLE PART
;;ESTABLISHED DATE:            2005/08/29
;;********************************************
TABLE1.     SECTION    PAGE      'CODE'
;;********************************************
;;THE T_LEAPMONTH TABLE CONTENT IS LEAP MONTH FROM 2000 YEAR TO 2031 YEAR
;;INPUT VARIABLE: ACC
;;********************************************
T_LEAPMONTH:
		DC		40H           
		DC		00H	        
		DC		02H          
		DC		07H         
		DC		50H          

		DC		00H           
		DC		04H         
		DC		09H         
		DC		60H          
		DC		00H           

		DC		04H          
		DC		20H          
		DC		60H         
		DC		00H          
		DC		05H         
		DC		30H		   
SBR_GETLEAPMONTH:
		MOV     R_TEMP3,A
		CLR     C
		RRC     ACC
		MOV     TBLP,A
		MOV     A,LOW T_LEAPMONTH
		ADDM    A,TBLP
		TABRDC  ACC
		SZ      R_TEMP3.0
		SWAP    ACC
		AND     A,0FH
		MOV     R_LEAPMONTH,A
		RET
;;*******************************************		
;;THE TABLE HIGH BYTE IS EACH MONTH DAYS,
;;AND LOW BYTE IS WEEK OF ONE DATE JANUARY SOLAR FROM 2000 YEAR TO 2031 YEAR
;;*******************************************
T_MONTHDAYS_WEEK:
		DC		0016H           
		DC      1F32H           
		DC		1C64H		   
		DC      1F10H           
		DC		1E42H          
		DC      1F65H           
		DC		1E20H	        
		DC      1F43H           
		DC		1F05H             
		DC      1E21H           
		DC		1F53H           
		DC      1E06H           
		DC      1F31H           
		DC      0054H           
		DC      0016H           
		DC      0032H           
;;--------------------------------------------
;;CALCULATE FROM CURRENT DATE SOLAR TO ONE DATE JANUARY SOLAR DAYS
;;INPUT VARIABLE: R_MONTH_SOLAR
;;--------------------------------------------
SBR_GETDAYSNUMBER:
		M_MOV     R_TEMP3,R_MONTH_SOLAR
MLP_GETDAYSNUMBER:
		DEC       R_TEMP3
		SZ        Z
		JMP       L_GETTOTALDAYS    
		MOV       A,LOW T_MONTHDAYS_WEEK
		ADD       A,R_TEMP3
		MOV       TBLP,A
		TABRDC    ACC
		MOV       A,TBLH
		ADDM      A,R_DAYNUMBERL
		MOV       A,0H
		ADCM      A,R_DAYNUMBERH
		JMP       MLP_GETDAYSNUMBER
L_GETTOTALDAYS:
		MOV       A,R_DATE_SOLAR
		SUB       A,01H
		ADDM      A,R_DAYNUMBERL
		MOV       A,0H
		ADCM      A,R_DAYNUMBERH
        CALL      SBR_CHECKLEAPYEAR
		SNZ       F_LEAPYEAR
		RET
		MOV       A,R_MONTH_SOLAR
		SUB		  A,03H
		SNZ       C
		RET
		MOV       A,01H
		ADDM      A,R_DAYNUMBERL
		MOV       A,0H
		ADCM      A,R_DAYNUMBERH
		RET
;;-------------------------------------------
;;GET MONTH DAYS
SBR_GETMONTHDAYS:
		TABRDC   ACC
		MOV      A,R_MONTH_SOLAR
		XOR      A,02H
		MOV      A,TBLH
		SNZ      Z
		RET                              ;;R_MONTH_SOLAR IS NOT 2.
        CALL     SBR_CHECKLEAPYEAR       ;;R_MONTH_SOLAR IS 2.
		SNZ      F_LEAPYEAR
		RET	
		INC      ACC
		RET
;;-------------------------------------------
;;CALCULATE THE ONE DATE JANUARY OF SOLAR IS WHICH WEEK
;;INPUT VARIABLE: R_SOLAR_YEAR
SBR_GETWEEK1_1:
		M_MOV     TBLP,R_YEAR_SOLAR
		CLR       C
		RRC       TBLP
		MOV       A,LOW T_MONTHDAYS_WEEK
		ADDM      A,TBLP
		TABRDC    ACC
		SZ        R_YEAR_SOLAR.0
		SWAP      ACC
		AND       A,0FH
		MOV       R_WEEK,A
		RET
;;*******************************************
;;INPUT VARIABLE: ACC
;;*******************************************
T_LUNARDATEOF1_1:
		DC		2719H           
		DC		1D12H           
		DC		152AH           
		DC		0D22H           
		DC		2617H           
		DC		1B11H           
		DC		1428H          
		DC		0B21H           
		DC		2416H           
		DC		1A0FH           
		DC		1227H           
		DC		2A1DH           
		DC		2214H           
		DC		180DH           
		DC		1125H          
		DC      281CH           
          
SBR_GETLUNARDATEOF1_1:
		MOV		R_TEMP3,A
		CLR     C
		RRC		ACC
		MOV     TBLP,A
		MOV     A,LOW T_LUNARDATEOF1_1
		ADDM    A,TBLP
		TABRDC  R_TEMP2
		MOV     A,TBLH
		SZ      R_TEMP3.0       ;;THE YEAR IS ODD NUMBER OR EVEN NUMBER
		JMP     L_GETLUNARDATEOF1_1
		MOV     A,R_TEMP2       ;;THE YEAR IS EVEN NUMBER
L_GETLUNARDATEOF1_1:
		MOV     R_TEMP2,A
		AND     A,1FH
		MOV     R_LUNARDATE_1,A
		MOV     A,0BH
		SZ      R_TEMP2.5       ;;R_TEMP2.5 EQU 0 IS NOVEMBER,R_TEMP2.5 EQU 1 IS DECEMBER 
		MOV     A,0CH
		MOV     R_LUNARMONTH_1,A		
		RET
;;*****************************************
;;INPUT VARIABLE: ACC
;;*****************************************
T_LUNARMONTHID:
		DC	    0C96H	 ;;2000YEAR
		DC	    1D4AH
		DC	    0D4AH
		DC	    0DA5H
		DC   	15AAH
		DC  	056AH    

		DC  	1AADH    ;;0AADH
		DC  	025DH    ;;125DH
		DC  	092DH
		DC	    1C95H
		DC	    0A95H	
	
		DC	    0B4AH
		DC  	0B55H
		DC  	0AD5H
		DC  	155AH
		DC	    04BAH	
	
		DC  	0A5BH
		DC	    152BH
		DC	    052BH
		DC  	0A93H
		DC	    174AH	
		DC  	06AAH
		DC	    0AD5H
		DC  	14DAH
		DC  	04B6H
		DC	    0957H	
	
		DC   	0A4EH
		DC  	0D26H
		DC	    0E93H
		DC  	0D53H
		DC	    05AAH	
	
		DC	    06B5H   
SBR_GETLUNARMONTHID:
		MOV     TBLP,A
		MOV     A,LOW T_LUNARMONTHID
		ADDM    A,TBLP
		TABRDC  R_LUNARMONTHIDL
		M_MOV   R_LUNARMONTHIDH,TBLH
		RET
;;********************************************
;;IT IS SOLAR TERM DATE OF EACH MONTH
;;********************************************
T_SOLARTERM_DATE:
		DC      1405H   ;;JANUARY THE FIRST SOLARTERM OF JANUARY IS 5 DATE,AND THE SECOND SOLARTERM OF JANUARY IS 14 DATE
		DC      1203H   ;;FEBRUARY
		DC      1405H   ;;MARCH
		DC      1304H   ;;APRIL
		DC      1405H   ;;MAY
		DC      1505H   ;;JUNE
		DC      1606H   ;;JULY
		DC      1607H   ;;AUGUST
		DC      1607H   ;;SEPTEMBER
		DC      1708H   ;;OCTOBER
		DC      1607H   ;;NOVEMBER
		DC      1506H   ;;DECEMBER
SBR_GETSOLARTERMDATE:
		DEC     ACC
		MOV     TBLP,A
		MOV     A,LOW T_SOLARTERM_DATE
		ADDM    A,TBLP
		TABRDC  R_SOLARTERMDATE
		M_MOV   R_TEMP1,TBLH
		RET
;;********************************************
;;THE DELTA DATE OF SOLARTERM FROM JANUARY TO JUNE
;;********************************************
T_SOLARTERMDELTADATELOW:
		DC      001010001111B    
        DC      001011000100B
        DC      011111111100B
        DC      011111111101B
        DC      001010001111B
        DC      001011000100B   

        DC      011011111100B
        DC      111111111101B
        DC      001010001111B
        DC      001010000100B
        DC      011011111100B    

        DC      111111111101B
        DC      000010001111B
        DC      001010000100B
        DC      011011111100B
        DC      111111111101B    

        DC      000000001101B
        DC      001010000000B
        DC      011011101100B
        DC      011111111100B
        DC      000000001101B   

        DC      001010000000B
        DC      011011001100B
        DC      011111111100B
        DC      000000001101B
        DC      001010000000B    

        DC      001111000100B
        DC      011111111100B
        DC      000000001101B
        DC      001010000000B
        DC      001011000100B   
;SBR_GETSOLARTERMDELTADATELOW:
;		TABRDC  R_TEMP2
;		RET	
;;********************************************
;;TE DELTA DATE OF SOLARTERM FROM JULY TO DECEMBER
;;********************************************
T_SOLARTERMDELTADATEHIGH:
		DC      010000101001B   
        DC      110000101011B
        DC      110000111111B
        DC      111111111111B
        DC      010000101001B    
        DC      110000101011B

        DC      110000111011B
        DC      111111111111B
        DC      010000001001B
        DC      110000101011B
        DC      110000111011B    

        DC      111110111111B
        DC      010000001001B
        DC      110000101001B
        DC      110000111011B
        DC      110110111111B   

        DC      010000001001B
        DC      110000101001B
        DC      110000111011B
        DC      110110111111B
        DC      010000000000B   

        DC      010000101001B
        DC      110000101011B
        DC      110110111111B
        DC      000000000000B
        DC      010000101001B   

        DC      110000101011B
        DC      110000111111B
        DC      000000000000B
        DC      010000101001B
        DC      110000101011B    
SBR_GETSOLARTERMDELTADATELOW:

⌨️ 快捷键说明

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