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

📄 idwrachot.asm

📁 空调控制程序,MCU 采用NEC D789189
💻 ASM
字号:

;	NAME	HEAT
;************************************************************************
;************************************************************************
; 	TITLE:          EL005SYS.ASM
;	VERSION:	1.0
;	DATE:		2001.11.14
; 	AUTHOR:         Gilbert.Huang
; 	DESCRIPTION:    Elux DKS-03 壁挂式空调电控程序(35,36,26)
;
;	Chip type:	ST72215G2
; 	ROM SIZE:	8K  BYTES
; 	RAM SIZE:	384 BYTES
; 	EEPROM SIZE:	256 BYTES
; 	CRYSTAL:	8MHz
; 	I/O PORT:	22  PINS
; 	PACKAGE:	SDIP32
;
;	A REGISTER:	FOR GENERAL USE
;	X REGISTER:	FOR INDEXED ADDRING
;	Y REGISTER:	FOR LOOP countING
;************************************************************************
; :化霜时5分钟到12度没有延时就退出化霜--分钟常数缺少既是基准造成一分钟延时成了5秒钟
;************************************************************************
; 	$include 	(LT0219sym.INC)
;	$include	(LT0219RAM.INC)
;	$include	(LT0219MAC.INC)
;	CSEG
;;************************************************************************
;	EXTRN 	ONcomp
;	EXTRN 	OFFcomp
;	EXTRN	OFFs4
;	EXTRN	OFFext
;	EXTRN	ON2OFF

;************************************************************************
;************************************************************************
;*	Module Name	:HEATctrl					*
;*	Function	:heat mode control				*
;*	Input		:M_MODrun,D_TMPset,D_TMPrun;C_COM3mP		*
;*	Output:		:f_COMon;f_EXTon,f_S4on,			*
;*	Break:								*
;*	stack:								*
;************************************************************************
;	History:
;
;------------------------------------------------------------------------
HEATctrl:
	LD	A,M_MODrun
	CMP	A,#n_Mheat
	JRNE	CLRheat
	CALL	!DEFchk	
	CALL	!HEATsel
;	CALL	!HEATER	
	CALL	!HEATfan
	RET
	
;========================================================================
CLRheat:
	LD	C_DEFpipe,#n_2m1s
	MOV	C_DEF44m,#44
	BRES	f_DEFing
	CALL	!OFFs4
	CLR1	f_HEAT1st
	CLR1	f_HTR1on
	CLR1	f_HTR2on
	CLR1	f_HEATsel
	CLR1	f_TMPup
	LD	A,#n_inP0
        LD	M_TMPinP,A
	RET
	
;========================================================================


;========================================================================
DEFchk:
	BT	f_DEFing,$DEFctrl

        CMP	M_TMPinP,#n_inP4
        BNC	$noCHKpipe
        	
	BT	f_ERRTdef,$noCHKpipe
	CMP	C_DEF44m,#0
	BNE	noCHKpipe
	MOVW	ax,C_COM6mRUN
	CMPW	ax,#0
	BNE	noCHKpipe
	
	LD	A,D_TMPdef
	CMP	A,#n_DEFtmp+1
	JRULT	CHKtmp1
	LD	C_DEFpipe,#n_1m1s
noCHKpipe:
	RET

CHKtmp1:			;check the temp of out pipe time continue
	TNZ	C_DEFpipe
	JREQ	$+2+1
	RET
	
	MOVW	AX,#n_10m1s
	MOVW	C_DEF10m,AX
	BSET	f_DEFing
	LD	A,#n_DEFstart
	LD	D_DEFstep,A	;n_DEFstart:3;n_DEFnow:2,n_DEFexit:1,n_DEFchk:0
	LD	A,#32		;n_4s125
	LD	C_DEF4s,A
	RET
;========================================================================
DEFctrl:
	cmp	D_DEFstep,#n_DEFstart
	BNE	DEFnow
DEFstart:
	cmp	C_DEF4s,#0
	BEQ	DEFoffEXT

	CMP	C_DEF4s,#16
	BC	$DEFoffs4
	RET
DEFoffEXT:
	mov	D_DEFstep,#n_DEFnow
	CLR1	f_EXTon
	
DEFoffs4:
	CLR1	f_S4on
	RET
;------------------------------------------------------------------------
DEFnow:
	BT	f_ERRTdef,$skipCHKpipe
	CMP	D_TMPdef,#50+n_TMPdsp		;TEMP pipe indoor >= 10 `C
	BNC	$EXTdef				;YES>> exit the prodect freeze
skipCHKpipe:
	MOVW	AX,C_DEF10m
	CMPW	AX,#0
	BEQ	EXTdef
NOextDEF:	
	CLR1	f_EXTon
	CLR1	f_S4on
	RET

EXTdef:
	SET1	f_EXTon
	SET1	f_S4on
CLRdef:
	CLR1	f_DEFing
	LD	C_DEFpipe,#n_2m1s
	MOV	C_DEF44m,#44
	mov	D_DEFstep,#n_DEFchk
	RET
;------------------------------------------------------------------------

;========================================================================
;f_HEAT1st:	first heat
;f_HEATsel:	already select HEAT methord
;f_HTRsel:	If it is 1, HEAT methord select HTR; else select compressor
;************************************************************************
HEATsel:
	BT	f_DEFing,$ENDselH	
	BT	f_HEATsel,$HTRonCTRL
	
	
	CLR1	f_HTRsel
	CMP	D_TMPor,#43		;(6)degree	
	BNC	$SELpump
	SET1	f_HTRsel
SELpump:

HEATchk:
	MOV	A,D_TMPrun
	dec	A
	dec	A
	CMP	A,D_TMPrm
	BNC	$HEATstart
	BR	HOFFctrl
	
HEATstart:
	cmp	M_TMPinP,#n_inP5
	BC	$$+2+1
	RET
	mov	C_HEAT15s,#15
	BF	f_HEAT1st,$SELhtr	
	BT	f_HTRsel,$SELhtr	
HEATpump:
HEATonSTART:
	TNZ	C_COM3mP
	JREQ	$+2+1
	RET
	SET1	f_HEATsel	
	SET1	f_S4on
	SET1	f_EXTon
	MOV	C_COM5s,#3
ENDselH:
	RET
SELhtr:
	CALL	!OUTfanCOOL
	call	!OFFs4
 
	TNZ	C_HTR3mP
	JREQ	$+2+1
	RET
	SET1	f_HEAT1st
	SET1	f_HEATsel
	SET1	f_HTRsel
	SET1	f_HTR1on
	SET1	f_HTR2on

	RET	
;========================================================================

	
;========================================================================

HTRonCTRL:
	BTJT	o_COMon,HoffCHK
	BTJT	o_HTR1,HoffCHK

	BT	f_HTRsel,$HoffCHK
	TNZ	C_COM5s
	JREQ	$+2+1
	RET
	CALL	!ONcomp
	MOV	A,D_TMPrm
	MOV	D_TMPbak,A
	BR	HoffCHK1
HoffCHK:
	MOV	C_FAN60sOFF,#n_60s1s;
HoffCHK1:	
	MOV	A,D_TMPrm
	DEC	A
	DEC	A
	CMP	A,D_TMPbak
	BC	$$+2+3
	SET1	f_TMPup
	
	BTJT	f_ERRTrm,HEAToff
	LD	A,D_TMPrm
	DEC	A
	DEC	A
	DEC	A
	DEC	A
	DEC	A

;------------------------------------------------
	CMP	M_MODset,#n_Mauto
	BNE	NOTautoHEAT
	DEC	A
	DEC	A			;自动模式 tr>=ts+4 stop
NOTautoHEAT:
;------------------------------------------------

	CMP	A,D_TMPrun
	JRUGE	HEAToff			;Tr>=Ts+3
	BT	f_HTRsel,$SELhtr
HEATon:
	TNZ	C_COM3mP
	JREQ	$+2+1
	RET
	MOVW	ax,C_COM6mRUN
	CMPW	ax,#n_6M1s-150		;2min 30 sec
	BNC	$NOTchgHTR
	BF	f_TMPup,$gotoHTR
NOTchgHTR:	
	SET1	f_COMon
	SET1	f_S4on
	SET1	f_EXTon
	RET
gotoHTR:
	CLR1	f_COMon
	SET1	f_HTRsel
	RET
;========================================================================
	
HOFFctrl:
HEAToff:
	BT	f_HTRsel,$htrOFFctrl
HEATcompOFF:
	MOVW	ax,C_COM6mRUN
	CMPW	AX,#0
	JREQ	$+2+1
	RET

	CALL	!OFFcomp
	CLR1	f_TMPup
	CLR1	f_HEATsel	
	CMP	C_COM3mP,#180-15
	BC	$EXToffH
	RET
EXToffH:	
	CALL	!OFFext
	RET

htrOFFctrl:
	TNZ	C_HTR3mRUN
	JREQ	$+2+1
	RET
	CLR1	f_HTR1on
	CLR1	f_HTR2on
	CLR1	f_HEATsel
	CLR1	f_TMPup	
	ret
	

;========================================================================
;	tr<ts-4`c 		:high	-4`c= 7`f -3`c =5f
;	ts-4`c=<tr<=ts-1`c 	:med
;	tr>ts-1`c		:low	
;------------------------------------------------------------------------
;change to
;	tr<ts-4`c --- tr<=ts-9`f 			:high	-4`c= 7`f -3`c =5f
;	ts-4`c=<tr<=ts-1`c---ts-7`f<=tr<=ts-2`f 	:med
;	tr>ts-1`c --- tr>=ts				:low	

;========================================================================
HEATauto:
	MOV	A,M_FANrun
	CMP	A,#n_FANauto
	BEQ	$+2+1
	RET

	MOV	A,D_TMPrun
	sub	A,#9
	CMP	A,D_TMPrm
	BNC	$hAUTOhigh

	
	MOV	A,D_TMPrm
	CMP	A,D_TMPrun
	BNC	$hAUTOlow
	

	MOV	A,M_FANsp
	CMP	A,#n_FANlow
	BEQ	HEATl2mCHK
	CMP	A,#n_FANhigh
	BEQ	HEATh2mCHK
	CMP	A,#n_FANmid
	BNE	hAUTOlow
hAUTOmid:
	mov	A,#n_FANmid
	RET
;------------------------------------------------------------------------
hAUTOlow:
	mov	A,#n_FANlow
	RET
;------------------------------------------------------------------------
hAUTOhigh:
	mov	A,#n_FANhigh
	RET
	
;========================================================================



;========================================================================
;------------------------------------------------------------------------
HEATl2mCHK:
	MOV	A,D_TMPrun
	sub	A,#2
	cmp	A,D_TMPrm
	bnc	$hAUTOmid
	br	hAUTOlow
HEATh2mCHK:
	MOV	A,D_TMPrm
	ADD	A,#7
	CMP	A,D_TMPrun
	BNC	$hAUTOmid
	BR	hAUTOhigh
;**************************************************************************
;	heat fan control	
;**************************************************************************
;************************************************************************
;*	Module Name	:HEATfan					*
;*	Function	:Heat Mode Fan Speed Control			*
;*	Input		:M_FANrun					*
;*	Output		:M_FANsp,M_TMPinP				*
;*	Break		:						*
;*	stack:								*
;************************************************************************
;	History:
;
;------------------------------------------------------------------------
HEATfan:

	CALL	!HEATauto
	mov	X,A
	LD	A,M_TMPinP
	CMP	A,#n_inP0
	JRNE	$+2+3
	JP	HEATinP0
	CMP	A,#n_inP1
	JRNE	$+2+3
	JP	HEATinP1
	CMP	A,#n_inP2
	JRNE	$+2+3
	JP	HEATinP2


;	CMP	A,#n_inP3
;	JRNE	$+2+3
;	JP	HEATinP3

	CMP	A,#n_inP4
	JRNE	$+2+3
	JP	HEATinP4
	CMP	A,#n_inP5
	JRNE	$+2+3
	JP	HEATinP5


	;...			;error
	LD	A,#n_inP0
	LD	M_TMPinP,A
	ret		

TINYfan1:
;	SET1	f_FANon
	LD	A,#n_FANlow
	LD	M_FANsp,A
	RET

;========================================================================


;========================================================================
HEATinP0:
	CALL	!INPup1CHK
	CALL	!INPup2CHK
;	CALL	!INPup3CHK	
	CALL	!INPup4CHK		
	CALL	!INPup5CHK	
heatFANoff:
	LD	A,#n_FANoff
	LD	M_FANsp,A
	
	RET
;========================================================================
HEATinP1:
	CALL	!INPdn0CHK
	CALL	!INPup2CHK
;	CALL	!INPup3CHK	
	CALL	!INPup4CHK		
	CALL	!INPup5CHK			
LfanNOW:
	LD	A,#n_FANlow

	LD	M_FANsp,A
	RET

	
;========================================================================
HEATinP2:
;	CALL	!INPdn1CHK
	CALL	!INPdn0CHK
;	CALL	!INPup3CHK
	CALL	!INPup4CHK	
	CALL	!INPup5CHK
heatSETfan:				
	MOV	A,X		;M_FANrun
	LD	M_FANsp,A
	RET


;;========================================================================
;HEATinP3:
;	CALL	!INPdn2CHK
;;	CALL	!INPdn1CHK
;	CALL	!INPdn0CHK
;	CALL	!INPup4CHK		
;	CALL	!INPup5CHK		
;
;	LD	A,#n_FANhigh
;	LD	M_FANsp,A
;		
;	RET
	
;
;========================================================================
HEATinP4:
	CALL	!INPdn2CHK
;	CALL	!INPdn1CHK
	CALL	!INPdn0CHK
	CALL	!INPup5CHK				

	LD	A,X
	LD	M_FANsp,A
	
	BRES	f_EXTon


	RET
;========================================================================
HEATinP5:
;------------------------------------------------------------------------
;3分钟后,才检测到Tp≤48℃
;	CALL	!INPdn0CHK
;	CMP	C_COM3mP,#0		
;	BNE	NOTchkDN
;------------------------------------------------------------------------
	
	CALL	!INPdn2CHK			
;	CALL	!INPdn1CHK

NOTchkDN:
	LD	A,X
	LD	M_FANsp,A
	
	CALL	!OFFcomp
	BRES	f_EXTon
	BRES	f_HEATsel
	RET
	

;========================================================================
INPup1CHK:
	BTJT	o_COMon,COMonUP1
	ret
;------------------------------------------------------------------------
COMonUP1:
	
	MOV	A,C_HEAT15s
	CMP	A,#0		;#n_15s1s-n_5s1s
	BEQ	UPto1
	ret
UPto1:	        
        LD	A,#n_inP1
	LD	M_TMPinP,A
        RET
;========================================================================
INPup2CHK:

	BTJT	o_HTR1,HTRonUP2
	BTJT	o_COMon,COMonUP2
	ret

COMonUP2:
        LD	A,D_TMPinP
        CMP	A,#106+n_TMPdsp
        JRUGE	$+2+1
        RET

	MOV	A,C_HEAT15s
	CMP	A,#n_15s1s-n_5s1s
	BC	$$+2+1
	ret
HTRonUP2:
NOcoldFAN:
        LD	A,#n_inP2
        LD	M_TMPinP,A
        RET
        
;;========================================================================
;INPup3CHK:
;	BTJT	o_HTR1on,HTRonUP3
;	BTJT	o_COMon,COMonUP3
;	ret
;COMonUP3:
;HTRonUP3:
;	LD	A,D_TMPinP
;        CMP	A,#136+n_TMPdsp		;
;        JRUGE	$+2+1
;        RET
;
;        LD	A,#n_inP3
;        LD	M_TMPinP,A
;        RET
;;========================================================================        
;========================================================================
INPup4CHK:
	BTJT	o_COMon,COMonUP4
	ret
COMonUP4:
	LD	A,D_TMPinP
        CMP	A,#136+n_TMPdsp		;
        JRUGE	$+2+1
        RET

        LD	A,#n_inP4
        LD	M_TMPinP,A
        RET
;========================================================================
INPup5CHK:
	BTJT	o_COMon,COMonUP5
	ret
COMonUP5:
	LD	A,D_TMPinP
        CMP	A,#149+n_TMPdsp		;
        JRUGE	$+2+1
        RET

        LD	A,#n_inP5
        LD	M_TMPinP,A
        RET	
;========================================================================
INPdn2CHK:
;	BF	f_RUNforce,$$+4+1		;强制运行	
;	RET

        LD	A,D_TMPinP
        dec	a
        CMP	A,#126+n_TMPdsp			;52`c
        JRULT	$+2+1
        RET
NOWdn2:        
        LD	A,#n_inP2
        LD	M_TMPinP,A
        RET
;;========================================================================
;INPdn1CHK:
;	BTJT	o_COMon,AAACchk
;ERRtINPCHK:	
;;------------------------------------------------------------------------
;	BR	$NOWto1
;;	BT	f_ERRTinP,$NOWto1		;该边吹愈热条件2003-11-4 12:01
;;	BR	NOWto1chk
;;------------------------------------------------------------------------
;
;AAACchk:
;	BF	f_RUNforce,$$+4+1		;强制运行	
;	RET
;NOWto1chk:	
;        LD	A,D_TMPinP
;        DEC	A
;        CMP	A,T_CoolFANstart		;#35+n_TMPdsp+1		<=35
;        JRULT	NOWto1
;        RET
;
;
;	
;NOWto1:        
;        LD	A,#n_inP1
;        LD	M_TMPinP,A
;        RET
;;========================================================================
INPdn0CHK:
        LD	A,D_TMPinP
	BTJF	f_PWRon,NOWto0
	
	CMP	C_FAN60sOFF,#0
	BEQ	NOWto0
        RET
NOWto0:        
        LD	A,#n_inP0
        LD	M_TMPinP,A
        RET

⌨️ 快捷键说明

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