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

📄 laohua.asm

📁 一个老化房温控器的程序
💻 ASM
📖 第 1 页 / 共 5 页
字号:
RESETF		DBIT
WARMFIRSTF	DBIT
COMPSECOF	DBIT
DJRFANF         DBIT

SETRAMF         DBIT

EEPROM_READERRF	DBIT
EEPROM_WRITEERRF	DBIT
EEPROMERRF	DBIT

ADOKF	DBIT
;****************************MAIN PROGRAM***********************
SUB1           CSEG   UNIT
START:
                DI
                MOVW    AX,#0FEFFH
                MOVW    SP,AX
                MOV     OSTS,#02H
                CLR1    WTIIF
                MOV     WTM,#01000011B
POWWAIT:        NOP
                BF      WTIIF,$POWWAIT
                CLR1    WTIF
                CLR1    WTIIF
;                MOV     WTM,#00000011B
;;;;                MOV     WTM,#10000011B          ;DEBUG,USE 32.768KHZ
;;;;                MOV     SCKM,#00000010B		;DEBUG,SUB ENABLE,OR 00000011B
		MOV	SCKM,#00000011B
                MOV     CSS,#0H
                MOV     PCC,#0H
                MOV     TCL2,#00000110B
                MOV     WDTM,#10011000B
                

RAMCLR:         MOVW    HL,#0FD00H
RMCL0:          MOV     A,#0H
                MOV     [HL],A
                INCW    HL
                MOVW    AX,HL
                CMPW	AX,#0FF00H
                BNZ     $RMCL0
                SET1    BUZF
                SET1    RUN
                MOV     BUZTIME,#0AH
                                MOV             ADCOUNT,#15H
				

;                                MOV             ATEMP,#24
;                                MOV             TEMPBUF,#24
;                                MOV             SSTEMP,#24
;                                MOV             DTEMP,#24
;                                MOV             WTEMP,#24
;                                MOV		FTEMP,#24
;                                MOV             TEMP,#8
;                                MOV             CTEMP,#24
;                                SET1            SAUTOF
				
                                SET1			LTORF

                                SET1            FANOFFF
                                SET1            AUTOFAN30SY
                                
                                SET1		WARMFIRSTF
                                
                                MOV		DRIVER,#0FFH
                                
;比70柜机单相少外盘                                
                                SET1		OUTERRF                                
                            
;*******************PORT INITIAL*********************
;;;;                SET1            P1.0
;;;;                SET1            P1.1
                CLR1            P1.0
                CLR1            P1.1
                MOV             P0,#0H
;;;;                MOV             P2,#01111111B
                MOV             P2,#00011000B
                MOV             P5,#0FFH
;;;;                MOV             P3,#00000111B
                MOV             P3,#00000001B
                MOV             PM0,#11000000B
                MOV             PM1,#11111100B
                MOV             PM2,#10000000B
                MOV             PM3,#11110001B
                MOV             PM5,#11110000B
                MOV             PU0,#01H
                CALL            !WRITE_164


                MOV             ADM0,#00001000B
                MOV             ADS0,#00000000B         ;ANI0

                MOV             TMC90,#01000010B
                MOV             BZC90,#00000000B        ;BUZ OUTPUT
                MOV             TMC80,#00000010B        ;NO USE
                MOV             CR80,#0FFH
                MOV             TMC81,#00000010B        ;0.061MS=4.19,0.0512=5.0MHZ
;                MOV             CR81,#0C3H              ;10MS,0.061MS*A4=10MS,0.0512*C3=10MS
                MOV             CR81,#18H               ;21
                MOV             TMC82,#00000010B        ;0.031MS
;;;;                MOV             TMC82,#00000100B                ;0.031MS,DEBUG,USE 32.768KHZ
                MOV             CR82,#3FH               ;1.95MS
                CALL            !DOG
                
                		CALL	!IICBUS_START		;测试有无EEPROM
		MOV	A,#0F1H
		CALL	!WRITE8BIT
		CALL	!SLAVEACK
		CMP	A,#0H
		BZ	$EEPROMOK	;无EEPROM,不要记忆		
		BR	!EEPROM0
EEPROMOK:		
		CALL	!READ8BIT
		CMP	A,#0FFH
		BNZ	$TESTEEPROM1
		MOV	A,#0H		;有EEPROM则进入读数据,置EEPROMBUF 01
TESTEEPROM1:		
		MOV	EEPROM_ADDR,A
		MOV	EEPROMBUF,#01H
		CALL	!IICBUS_STOP		
EEPROM1_0:      CALL	!DOG
		SET1		EEPROM_READERRF         
                CALL		!EEPROM_READ
                MOV		A,EEPROM_ADDR
                CMP		A,#0F0H
                BNZ		$EEPROM1_1                
;                SET1		EEPROMERRF
                BR		!EEPROM0
EEPROM1_1:                
		BT		EEPROM_READERRF,$EEPROM1_0		
		MOVW		HL,#EEPROM_RAM
		MOVW		DE,#ATEMP
		MOV		A,[HL]
		CMP		A,#16
		BC	$EEPROM00    ;表明EEPROM使用过,但不遵循本格式
		CMP	A,#30
		BC	$EEPROM2
		BZ	$EEPROM2
		BR	!EEPROM00
		
EEPROM2:		
		MOV		A,[HL]
		CMP	A,#0FFH
		BZ	$EEPROM00	;表明此EEPROM未使用过

		XCH		A,[DE]
		INC		L
		INC		E
		MOV		A,L
		CMP		A,#LOW EEPROM_RAM+12
		BNZ		$EEPROM2
		BF		SAUTOF,$EEPROM21
		MOV		A,AFANREG
		MOV		FANREG,A		
		MOV		A,ATEMP		
EEPROM20:		
		MOV		SSTEMP,A
		MOV		TEMPBUF,A
		SUB		A,#10H
		MOV		TEMP,A
		BR		!EEPROM1
EEPROM21:	BF		SWARMF,$EEPROM22
		MOV		A,WFANREG
		MOV		FANREG,A
		MOV		A,WTEMP		
		BR		!EEPROM20
EEPROM22:	BF		SFANMF,$EEPROM23
		MOV		A,FFANREG
		MOV		FANREG,A
		MOV		A,FTEMP
		BR		!EEPROM20	
EEPROM24:	MOV		A,DTEMP
		BR		!EEPROM25							
EEPROM23:	BF		SCOOLF,$EEPROM24
		MOV		A,CFANREG
		MOV		FANREG,A
		MOV		A,CTEMP
EEPROM25:		
		MOV		SSTEMP,A
		MOV		TEMPBUF,A
		SUB		A,#10H
		MOV		TEMP,A
		BR	!EEPROM1
;*****************************************
;EEPROM错误处理
;*******************************************		
EEPROM0:	SET1	EEPROMERRF
EEPROM00:	
	MOV	ATEMP,#24
	MOV	DTEMP,#24
	MOV	WTEMP,#24
	MOV	CTEMP,#24
	MOV	FTEMP,#24
	MOV	CFANREG,#0H
	MOV	FFANREG,#0H
	MOV	WFANREG,#0H
	MOV	MODFLG,#10000000B
	MOV	MODFLG1,#0H	
	MOV	MODFLG2,#0H
	MOV	FANREG,#0H
	MOV	TEMP,#8
	MOV	SSTEMP,#24
	MOV	TEMPBUF,#24				
				
EEPROM1:CLR1	DJRF
	SET1	DJR5MY
;********************INTERRUPT INITIAL**********************
                CLR1            TMIF80
                CLR1            TMMK80
                CLR1            TMIF81
                CLR1            TMMK81
                SET1            TCE80
                SET1		TCE81
                EI

RESDIS3S:	

               MOVW    AX,#0FFFFH
               CALL       !DISALL
               SET1	RESETF
NOJP2:
;                MOV     B,#0FH
;RAD2:           CLR1    ADCS0
;                CLR1    ADIF0
;                MOV     ADS0,#0H
;                SET1    ADCS0
;RAD1:           NOP
;                BF      ADIF0,$RAD1
;                MOV     A,ADCR0
;                CMP     A,X
;                BZ      $RAD3
;                MOV     B,#0FH
;                MOV     X,A
;RAD3:           DBNZ    B,$RAD2
;                CMP     A,#00H
;                BNZ     $RESDIS3S1
                BT              P6.1,$RESDIS3S1
                SET1            COMP
;;;;                CALL            !WRITE_164
                CALL            !TEST1S
                CLR1            COMP
                SET1            STF
;;;;                CALL            !WRITE_164
                CALL            !TEST1S
                CLR1            STF
                SET1            EXTFAN
;;;;                CALL            !WRITE_164
                CALL            !TEST1S
                CLR1            EXTFAN
                SET1            JHQ
;;;;                CALL            !WRITE_164
                CALL            !TEST1S
                CLR1            JHQ
                CLR1            DJR
;;;;                CALL            !WRITE_164
                CALL            !TEST1S
                SET1            DJR
                SET1            BFF
;;;;                CALL            !WRITE_164
                CALL            !TEST1S
                CLR1            BFF
                SET1            LFAN
;;;;                CALL            !WRITE_164
                CALL            !TEST1S
                CLR1            LFAN
                SET1            MFAN
;;;;                CALL            !WRITE_164
                CALL            !TEST1S
                CLR1            MFAN
                CLR1            HFAN
;;;;                CALL            !WRITE_164
                CALL            !TEST1S
                SET1            HFAN
;;;;                CALL            !WRITE_164
		MOV		TIMERC,#0H	;必须加,防止自检后开机的情况下风速显示不正常
                BR              !TESTEND
RESDIS3S1:
;                CALL            !REFRESHRAM
;                CALL            !SCANLED_S
                CALL            !DOG
                BF              WTIF,$RESDIS3S1
                CLR1            WTIF
                INC             SEC
                CMP             SEC,#06H
                BNZ             $RESDIS3S1
                MOV		SEC,#0H
TESTEND:        CLR1		RESETF
		MOVW            AX,#0H
                CALL            !DISALL
                DI
                CLR1            TMIF82
                CLR1            TMMK82            ;ENABLE T2E
                SET1		TCE82
                EI
;****************************************
GOADSTR:        CALL            !DOG
                BF              P6.3,$START0
;;;;;;;                BBC             OUT0F,START
FIRSTON:
                SET1            COMP3MF

START0:         CALL            !DOG
                CALL            !AD
                BF	ADOKF,$START0
                CALL            !DOG
;                CALL            !REFRESHRAM
                BF             ROMERRF,$STARTNORERR
                MOV             ROMTEMP,#24
                BR             STARTRERR
STARTNORERR:
;;;;;;;;                MOV             A,ROMBUF              ;MAIN PROGRAM DEAL START
;;;;;;;;                MOV         ROMTEMP,A
STARTRERR:
;;;;;;;;                MOV             A,PIPBUF
;;;;;;;;                MOV             PIPTEMP,A
;;;;;;                LDA     OUTBUF
;;;;;;                STA     OUTTEMP
;                BBS         JP2F,OVCUR
;                BBC             RA.7,OVCUR
;                LDA             CURRENTBUF
;;                CMP             #0D7H                ;OVERCURENT DETECT
;                CMP             #0H
;                BEQ             OVERCUR
;                CMP             #0E0H
;                BCC             NOOVERCUR
;OVERCUR:        SET1            OVCURRENTF
;                BR             OVCUR

;CLRP5FF:        CLR1            P5FF
;                BR             QUITOV1
;NOOVERCUR:      BBS             P5FF,CLRP5FF
;                BBC             P53MY,OVCUR
;                SET1            P530MF
;                CLR1            P53MY
;QUITOV1:        CLR1            P5F
;                MOV             P51MC,#0H
;                MOV             P53MC,#0H
;                CLR1            OVCURRENTF

OVCUR:          BT              WTIF,$MAIN4_0                
                BR              !MAIN4
HERE1:          SET1            SECF
                BR              !HERE2
MAIN4_0:        CLR1            WTIF
                BF              SECF,$HERE1
                CLR1            SECF
HERE2:                
                CALL            !DOG
;                CALL            !TRYRUN3M

;                BT              TRYRUNF,$NODIST

                CALL            !CONKEY1S
	CALL	!PRESS2S		
;                CALL            !FLA5S
;                CALL            !WAITMCU
;                BT              FLA5SF,$NODIST
;                BT              DIS5SF,$NODIST
;                BT              DISERRF,$NODIST
;                CALL            !DISCLO                 ;BECAUSE REG,SO MUST BE IN MAIN
                CALL            !DOG
NODIST:
                BF              SECF,$MAIN4

;                BT              TRYRUNF,$MAINTRY1

                CALL            !CUIYURE30S
                CALL            !DELAY3M
                CALL            !DEFRO1M
                CALL            !COMP3M
                CALL            !COMP5M
                CALL	!DJRM
;                CALL            !AGFROST10M
                CALL            !AGFROST2M
                CALL            !COMP4M
                CALL            !ACOFAN30S
;                CALL            !FANDELAY10S
                CALL            !FANDELAY30S
;                CALL            !OVERWARM5M
		CALL		!OVERWARM10S
                CALL            !VALVE1M
                CALL            !COMP40M
                		CALL	!COMPCON15M
		CALL	!COMP1H
		CALL	!TIMER3M               
                CALL            !DEFRO8M
;                CALL            !DIS5S
                CALL            !DISTMP5S
                CALL            !SLEEPT
;                CALL            !P51M
                CALL            !VALOFF1M
;                CALL            !WARMT10M
                CALL            !COOLT10M
                CALL            !DEFRO30S

⌨️ 快捷键说明

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