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

📄 wan nian li.asm

📁 利用HT45R02编写的LED数码万年历
💻 ASM
字号:
#INCLUDE  WANNIANLI.INC
;;************************************************
;;******************MASK OPTION*******************
;;************************************************
;;MCU BODY:                    HT45R02
;;PRODUCT:                     51 PIN COB
;;FSYS:                        RC MODE(270K=4MHZ)
;;VDD:                         5V
;;WAKE-UP:                     NONE WAKE-UP
;;PULL-HIGH:                   PA,PC,PD AND PE PORT PULL-HIGH
;;NONE PULL-HIGH:              PB PORT NONE PULL-HIGH
;;BZ OUTPUT:                   PB1,PB0=I/O,I/O
;;WDT:                         WDT DISABLE
;;CLR WDT:                     ONE CLEAR INSTRUCTION
;;FS CLOCK SOURCE:             RTC OSC
;;LVR:                         DISABLE
;;TIMER COUNTER CLOCK SOURCE:  FSP
;;ESTABLISHED DATE:            2005/08/29
;;LED SHOW SINGLE NUMBER
;;************************************************
;;*******************CODE SECTION*****************
;;************************************************
MAIN.     SECTION     AT 0H 'CODE'
ORG    00H
JMP    MAIN
ORG    04H
RETI
ORG    08H
JMP    ISR_TIMER
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MAIN:
		CLR      INTC
		
;		MOV      A,R_TCODE1
;		XOR      A,55H
;		SNZ      Z
;		JMP      L_INI_RAM
;		MOV      A,R_TCODE2
;		XOR      A,0AAH
;		SZ       Z
;		JMP      L_INI_REGISTER   
L_INI_RAM:
		CALL	 INI_RAM
L_INI_REGISTER:
		CALL     INI_REGISTER	
		CALL     SBR_TESTLED
		SET      TMRC.4
		SET      INTC.0
;;************************************************
MLP_MAIN:
L_PROCESSCLOCK:
		SNZ      F_SECOND
		JMP      L_PROCESSKEY	
	
		CALL     SBR_CLOCK
		CALL     SBR_CHECKALARM

		CALL     SBR_CHECKINTEGERALARM
		CALL     SBR_CHECKALARMING
		CALL     SBR_CHECKSTOPALARMING

		CALL     SBR_TRANSMITCOMMANDINTIAL
;;------------------------------------------------
L_PROCESSKEY:
		CALL     SBR_KEYSCAN

		SZ       F_VALIDKEY
		SET      F_BUZZERON             ;;KEY TONE

		CALL     SBR_STOPADJUSTTIME
		CALL     SBR_SETSOLARTERMLEDMODE

		SNZ      F_UPDATEDATE
		JMP      L_CHECKADJUSTALARM
		CALL     SBR_GETLUNARCALENDAR
		CALL     SBR_GETWEEK
		CALL     SBR_GETSOLARTERM
;;************************************************
L_CHECKADJUSTALARM:

		SZ       R_SETMODE2
		JMP      L_CHECKADJUSTALNUMBER
		JMP      L_CHECKADJUSTALARMEXIT
L_CHECKADJUSTALNUMBER:
		SNZ      R_SETMODE2.0
		JMP      L_SHOWALARMNUMBER
		SNZ      F_LEDFLASH
		JMP      L_SHOWALARMNUMBER
		MOV      A,0FFH
		MOV      R_LEDWEEK,A
		JMP      L_CHECKADJUSTALHOUR
L_SHOWALARMNUMBER:
		MOV      A,R_ALARMNUMBER
		MOV      R_LEDWEEK,A
;;------------------------------------------------
L_CHECKADJUSTALHOUR:
		SNZ      R_SETMODE2.1
		JMP      L_SHOWALARMHOUR
		SNZ      F_LEDFLASH
		JMP      L_SHOWALARMHOUR
		MOV      A,0FFH
		MOV      R_LEDHOUR,A
		JMP      L_CHECKADJUSTALMINUTE
L_SHOWALARMHOUR:
		MOV      A,R_ALARMNUMBER
		XOR      A,01H
		SNZ      Z
		JMP      L_SHOWALARMHOUR2
		MOV      A,R_ALARMHOUR1
		CALL     SBR_CONVERTCLOCKMODE            
		CALL     SBR_HEXTODEC
		MOV      R_LEDHOUR,A
		JMP      L_CHECKADJUSTALMINUTE
L_SHOWALARMHOUR2:
		MOV      A,R_ALARMNUMBER
		XOR      A,02H
		SNZ      Z
		JMP      L_SHOWALARMHOUR3
		MOV      A,R_ALARMHOUR2
		CALL     SBR_CONVERTCLOCKMODE              
		CALL     SBR_HEXTODEC
		MOV      R_LEDHOUR,A
		JMP      L_CHECKADJUSTALMINUTE
L_SHOWALARMHOUR3:
		JMP      L_CHECKADJUSTALMINUTE
;;------------------------------------------------
L_CHECKADJUSTALMINUTE:
		SNZ      R_SETMODE2.2
		JMP      L_SHOWALMINUTE
		SNZ      F_LEDFLASH
		JMP      L_SHOWALMINUTE
		MOV      A,0FFH
		MOV      R_LEDMINUTE,A
		JMP      L_CHECKADJUSTALARMON_OFF
L_SHOWALMINUTE:
		MOV      A,R_ALARMNUMBER
		XOR      A,01H
		SNZ      Z
		JMP      L_SHOWALMINUTE2
		MOV      A,R_ALARMMINUTE1              
		CALL     SBR_HEXTODEC
		MOV      R_LEDMINUTE,A
		JMP      L_CHECKADJUSTALARMON_OFF
L_SHOWALMINUTE2:
		MOV      A,R_ALARMNUMBER
		XOR      A,02H
		SNZ      Z
		JMP      L_SHOWALMINUTE3
		MOV      A,R_ALARMMINUTE2            
		CALL     SBR_HEXTODEC
		MOV      R_LEDMINUTE,A
		JMP      L_CHECKADJUSTALARMON_OFF
L_SHOWALMINUTE3:
		JMP      L_CHECKADJUSTALARMON_OFF
;;------------------------------------------------
L_CHECKADJUSTALARMON_OFF:
		SNZ      R_SETMODE2.3
		JMP      L_SHOWALON_OFF
		SNZ      F_LEDFLASH
		JMP      L_SHOWALON_OFF
		MOV      A,0FFH
		MOV      R_LEDSMONTH,A
		JMP      L_SHOWADJUSTALARMMODE
L_SHOWALON_OFF:
		MOV      A,01H
		XOR      A,R_ALARMNUMBER
		SZ       Z
		JMP      L_SHOWALON_OFF1
		MOV      A,02H
		XOR      A,R_ALARMNUMBER
		SZ       Z
		JMP      L_SHOWALON_OFF2
		JMP      L_SHOWADJUSTALARMMODE
L_SHOWALON_OFF1:
		MOV      A,0AAH
		SZ       F_ALARM1
		MOV      A,0BH
		MOV      R_LEDSMONTH,A 
		JMP      L_SHOWADJUSTALARMMODE
L_SHOWALON_OFF2:
		MOV      A,0AAH
		SZ       F_ALARM2
		MOV      A,0BH
		MOV      R_LEDSMONTH,A
;		JMP      L_SHOWADJUSTALARMMODE
L_SHOWADJUSTALARMMODE:  
		SET      R_LEDFLAG.6             ;;TURN OFF 20 YEAR
		MOV      A,0FFH
		MOV      R_LEDSYEAR,A
		MOV      R_LEDSDATE,A
		MOV      R_LEDSECOND,A
		MOV      R_LEDTEMPERATURE,A
		MOV      R_LEDLMONTH,A
		MOV      R_LEDLDATE,A
		MOV      R_LEDDELTADAYS,A
		CALL     SBR_LEDSCAN
		JMP      MLP_MAIN
L_CHECKADJUSTALARMEXIT:
		CLR      R_LEDFLAG.6
;		JMP      L_CHECKSETYEAR
;;************************************************
L_CHECKSETYEAR:
		SNZ      R_SETMODE1.0
		JMP      L_CONVERTYEARDATA
		SNZ      F_LEDFLASH
		JMP      L_CONVERTYEARDATA
		MOV      A,0FFH
		MOV      R_LEDSYEAR,A
		JMP      L_CHECKSETMONTH
L_CONVERTYEARDATA:
		MOV      A,R_YEAR_SOLAR
		CALL     SBR_HEXTODEC
		MOV		 R_LEDSYEAR,A
;;-----------------------------------------------
L_CHECKSETMONTH:
		SNZ      R_SETMODE1.1
		JMP      L_CONVERTMONTHDATA
		SNZ      F_LEDFLASH
		JMP      L_CONVERTMONTHDATA
		MOV      A,0FFH
		MOV      R_LEDSMONTH,A
		JMP      L_CHECKSETDATE
L_CONVERTMONTHDATA:
		MOV      A,R_MONTH_SOLAR
		CALL     SBR_HEXTODEC
		MOV      R_LEDSMONTH,A
;;------------------------------------------------
L_CHECKSETDATE:
		SNZ      R_SETMODE1.2
		JMP      L_CONVERTDATEDATA
		SNZ      F_LEDFLASH
		JMP      L_CONVERTDATEDATA
		MOV      A,0FFH
		MOV      R_LEDSDATE,A
		JMP      L_CONVERTWEEKDATA
L_CONVERTDATEDATA:
		MOV      A,R_DATE_SOLAR
		CALL     SBR_HEXTODEC
		MOV      R_LEDSDATE,A
;;------------------------------------------------
L_CONVERTWEEKDATA:
		MOV      A,R_WEEK
		XOR      A,07H
		MOV      A,R_WEEK
		SZ       Z                     ;;IS SUNDAY OR NOT,IF IT IS SUNDAY THEN SHOW 8
		MOV      A,08H                 ;;IT IS SUNDAY
		MOV      R_LEDWEEK,A
;;------------------------------------------------
L_CHECKSETHOUR:
		SNZ      R_SETMODE1.3
		JMP      L_CONVERTHOURDATA
		SNZ      F_LEDFLASH
		JMP      L_CONVERTHOURDATA
		MOV      A,0FFH
		MOV      R_LEDHOUR,A
		JMP      L_CHECKSETMINUTE
L_CONVERTHOURDATA:
		MOV      A,R_HOUR
		CALL     SBR_CONVERTCLOCKMODE             
		CALL     SBR_HEXTODEC
		MOV      R_LEDHOUR,A
;;------------------------------------------------
L_CHECKSETMINUTE:
		SNZ      R_SETMODE1.4
		JMP      L_CONVERTMINUTEDATA
		SNZ      F_LEDFLASH
		JMP      L_CONVERTMINUTEDATA
		MOV      A,0FFH
		MOV      R_LEDMINUTE,A
		JMP      L_CONVERTSECONDDATA
L_CONVERTMINUTEDATA:
		MOV      A,R_MINUTE
		CALL     SBR_HEXTODEC
		MOV      R_LEDMINUTE,A
;;------------------------------------------------
L_CONVERTSECONDDATA:
		MOV      A,R_SECOND
		CALL     SBR_HEXTODEC
		MOV      R_LEDSECOND,A

		MOV      A,R_TEMPERATURE
		SUB      A,09H
		SZ       C
		JMP      L_CONVERTTEMPERATURE
		MOV      A,R_TEMPERATURE
		OR       A,0A0H
;       JMP      L_CONVERTTEMPERATURE
;;------------------------------------------------
L_CONVERTTEMPERATURE:
		CALL     SBR_HEXTODEC
		MOV      R_LEDTEMPERATURE,A

		MOV      A,R_MONTH_LUNAR
		CALL     SBR_HEXTODEC
		MOV      R_LEDLMONTH,A

		MOV      A,R_DATE_LUNAR
		CALL     SBR_HEXTODEC
		MOV      R_LEDLDATE,A

		MOV      A,R_DELTADAYS
		CALL     SBR_HEXTODEC
		MOV      R_LEDDELTADAYS,A
;;-----------------------------------------------
L_SHOWLED:
		CALL     SBR_LEDSCAN
L_CALCULATETEMPERATURE:
		CALL     SBR_GETTEMPERATURE

		JMP      MLP_MAIN
#INCLUDE SUBROUTINE.ASM
#INCLUDE TABLE.ASM
;;************************************************                      

⌨️ 快捷键说明

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