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

📄 idwracmod.asm

📁 空调控制程序,MCU 采用NEC D789189
💻 ASM
字号:
	
;	NAME	MODE
; 	$include 	(LT0219sym.INC)
;	$include	(LT0219RAM.INC)
;
;
;	CSEG
;	EXTRN		OFF_COM
;	EXTRN		OUTcom
;	EXTRN		HEATctrl
;	extrn		BEEP1tms
;	
;	PUBLIC		MODctrl
;************************************************************************
;*	Module Name:	MODctrl						*
;*	Function:	mode control					*
;*	Input:								*
;*	Output:								*
;*	Break:								*
;*	stack:								*
;************************************************************************
;	History:
;
;------------------------------------------------------------------------
MODctrl:
	CMP	C_RMT1s,#0
	BEQ	$+2+1	;	BNZ	$MODrun
	RET
	
	MOV	A,M_MODset
	mov	X,A
	mov	A,M_MODrun
	CMP	A,X
	BZ	$MODrunF
	CMP	M_MODset,#n_Mauto
	BNE	noAUTO
	BR	MODauto
noAUTO:
	CMP	A,#n_Mheat
	BZ	$MODctrl1
	MOV	A,X
	CMP	A,#n_Mheat
	BNZ	$MODctrl2     		;制热与其他模式切换时要关压机
MODctrl1:
	BF	o_COMon,$MODctrl2
	CALL	!OFF_COM
	CLR1	f_EXTon
	CALL	!OUTcom
MODctrl2:

MODrunF:				;When C_rmt1s==0, then fanset=fantemp
	MOV	A,M_MODset
	MOV	M_MODrun,A
MODauto:	
;	MOV	A,D_TMPset
;	MOV	D_TMPrun,A
	MOV	A,M_FANset
	MOV	M_FANrun,A
;------------------------------------------------------------------------
MODrun:
	BF	f_PWRon,$OFFctrl
	CALL	!AUTOctrl
	CALL	!COOLctrl
	CALL	!FANctrl
	CALL	!DRYctrl
	CALL	!HEATctrl		;wait...
	RET
OFFctrl:
	CLR1	f_TMPhigh
	CLR1	f_DRYing
	CALL	!OFFs4
	CALL	!CLRheat
	CALL	!CLRfrz
	CALL	!OFF_COM
	CALL	!OFFfan
	RET
	
;************************************************************************
;*	Module Name:	AUTOctrl					*
;*	Function:	auto mod control				*
;*	Input:		M_MODset					*
;*	Output:								*
;*	Break:								*
;*	stack:								*
;************************************************************************
;	History:
;
;------------------------------------------------------------------------
;>=26 COOL <=24 STOP
;<22 HEAT  >=24 STOP
;------------------------------------------------------------------------
AUTOctrl:
	MOV	A,M_MODset
	cmp	A,#n_Mauto
	BNE	NOTautoMOD
	CMP	C_RMT1s,#0
	BNE	NOTautoMOD
	
	bt	f_GOODman,$GOODmanAUTO
	MOV	M_MODrun,#n_Mcool
	MOV	M_FANrun,#n_FANauto
;------------------------------------------------------------------------
;[his-004]	
	MOV	A,M_FANsp
	MOV	M_FANset,A
;------------------------------------------------------------------------

	ret
	
	
GOODmanAUTO:

	MOV	A,D_TMPrm
	CMP	A,#79		;26`C
	BNC	$AUTOcool
	BT	f_COOLonly,$AUTOcool
	CMP	A,#72
	BC	$AUTOheat
	CMP	M_MODrun,#n_Mheat
	BEQ	HEATcont	;继续hEAT
	BRA	COOLcont
AUTOcool:
	CMP	M_MODrun,#n_Mheat
	BNE	NOTswCOOL
	BF	o_COMon,$NOTswCOOL
	CLR1	f_COMon
	CLR1	f_EXTon
	CALL	!OUTcom	
NOTswCOOL:	
COOLcont:	
	MOV	M_MODrun,#n_Mcool
	MOV	D_TMPrun,#77
	ret
	
AUTOheat:
	CMP	M_MODrun,#n_Mheat
	BEQ	NOTswHEAT
	BF	o_COMon,$NOTswHEAT
	CLR1	f_COMon
	CLR1	f_EXTon
	CALL	!OUTcom	
NOTswHEAT:	
HEATcont:	
	MOV	M_MODrun,#n_Mheat
	MOV	D_TMPrun,#68
	ret

	
	
NOTautoMOD:
	RET





;************************************************************************
;*	Module Name:	EL001COL					*
;*	Function:	COOL mod control				*
;*	Input:		M_MODset					*
;*	Output:								*
;*	Break:								*
;*	stack:								*
;************************************************************************
;	History:
;
;------------------------------------------------------------------------
;------------------------------------------------------------------------
	PUBLIC	PROTfrz,COOLctrl
;------------------------------------------------------------------------
COOLctrl:
	BT	f_PWRon,$$+4+1		;POWER ON? yes>>
	RET
	
	mov	A,M_MODrun
	and	A,#3
	CMP	A,#n_Mcool
	BNZ	$NOTcool
	BF	f_COOLquick,$noQUCIK
	CMP	C_QUCIK30min,#0
	BNE	$+2+3
	CLR1	f_COOLquick
	
	MOV	D_TMPrun,#60+n_TMPdsp
	MOV	M_FANrun,#n_FANhigh
	
noQUCIK:
	CALL	!COOLcomp		;TEMP COMPARE CONTROL the compressor
	CALL	!PROTfrz		;cool mode aviod freeze
	CALL	!TMPhighCHK
	CALL	!OFFs4
NOTcool:
	RET


;------------------------------------------------------------------------
;	TEMP COMPARE CONTROL the compressor
;	INPUT:	D_TMPrun,D_TMPrm
;	OUTPUT:	f_COMon,f_EXTon
;	BREAK:	A
;------------------------------------------------------------------------
COOLcomp:
;	BT	f_pressure,$COOLoff
;	BT	f_ERRTrm,$COOLon

	BT	o_COMon,$COOLoffCHK

	CALL	!COOLfanON
COOLonchk:
;------------------------------------------------------------------------


	MOV	A,D_TMPrm

;------------------------------------------------------------------------
;[his-015]
	BT	f_MODmoney,$MONEYonCHK
	

	CMP	C_COM7mOFF,#0
	BEQ	MONEYcool
MONEYonCHK:	
	DEC	A
	DEC	A
MONEYcool:	
	CMP	A,D_TMPrun	;Temp room -2 => Temp set
	BNC	$COOLon		;Yes>>
FAN5sSET:
	BT	f_FRZoff,$SKIPmoney
	Bf	f_MODmoney,$SKIPmoney
	call	!OFFfan
SKIPmoney:
	CALL	!OUTfanCOOL
	RET	


COOLoffCHK:
	CLR1	f_TRMsample
	MOV	A,M_FANrun
	CMP	A,#n_FANauto
	BNE	$+2+3
	CALL	!COOLautoFAN
	MOV	M_FANsp,A


;------------------------------------------------------------------------
;[his-015]
	BF	f_MODmoney,$noMONEYoff
	mov	A,D_TMPrun
	dec	A
	dec	A
	cmp	A,D_TMPrm
	BNC	$COOLoff	;Ts-2>=Tr	degree F
	BR	COOLkeep			
noMONEYoff:
;------------------------------------------------------------------------
	
	
;	cmp	C_COM6mRUN,#12		;n_1m5s
	MOVW	ax,C_COM6mRUN
	CMPW	ax,#60
	
	BNC	$noCHKtrtp
	MOV	A,D_TMPinP
	add	A,#3		;2 degree c
	cmp	A,D_TMPrm
	BNC	$TRlowTP_2
noCHKtrtp:
	mov	C_TRlowTP,#120		;n_2m1s
	BR	ENDtrTPchk
TRlowTP_2:	
	CMP	C_TRlowTP,#0
	BNZ	$ENDtrTPchk
	BR	COOLoff
	
ENDtrTPchk:
;------------------------------------------------------------------------


;	cmp	C_COM6mRUN,#0
	MOVW	ax,C_COM6mRUN
	CMPW	ax,#0
	BNE	COOLkeep

	
	MOV	A,D_TMPrun
;	DEC	A
;	DEC	A

MONEYcoolOFF:
	CMP	A,D_TMPrm	;Temp room <= Temp set -2
	BNC	$COOLoff	;Yes>>
COOLkeep:
	CALL	!OUTfanCOOL
	;...
	RET

COOLon:
	BT	f_FRZoff,$COOLfanON
	BT	f_TMPhigh,$COOLfanON
	CMP	C_COM3mP,#0
	BNZ	$COOLfanON		;FAN5sSET	;$FAN5sFIRST	;COOLonRT
;
	CMP	C_FAN3s,#0
	BNZ	$FAN5sFIRST
SKIPfan5S:	
	SET1	f_COMon
FAN5sFIRST:	
	SET1	f_EXTon
	BR	EXTon1ST
COOLfanON:
	CALL	!OUTfanCOOL
EXTon1ST:
	MOV	A,M_FANrun
	CMP	A,#n_FANauto
	BNE	$+2+3
	CALL	!COOLautoFAN
	MOV	M_FANsp,A
COOLonRT:
	RET
;------------------------------------------------------------------------
COOLoff:
	CALL	!OFF_COM
	RET
;------------------------------------------------------------------------

;========================================================================
;TR>=TS+4`C	:HIGH	--  TR>= TS+7`F
;TS+4`C>TR>TS+1	:MED	--  TS+5 >= TR >= TS+4
;TR<=TS+1	:LOW	--  TR <=TS+2
;========================================================================
COOLautoFAN:
	mov	x,#n_FANlow

	MOV	A,D_TMPrm
	sub	A,#7
	CMP	A,D_TMPrun
	BNC	$cAUTOhigh

	
	MOV	A,D_TMPrun
	INC	A
	INC	A
	CMP	A,D_TMPrm
	BNC	$cAUTOlow
	
	

	MOV	A,M_FANsp
	CMP	A,#n_FANlow
	BEQ	COOLl2mCHK
	CMP	A,#n_FANhigh
	BEQ	COOLh2mCHK
	CMP	A,#n_FANmid
	BNE	cAUTOlow
cAUTOmid:
	mov	A,#n_FANmid
	RET
;------------------------------------------------------------------------
cAUTOlow:
	mov	A,#n_FANlow
	RET
;------------------------------------------------------------------------
cAUTOhigh:
	mov	A,#n_FANhigh
	RET
;------------------------------------------------------------------------
COOLl2mCHK:
	MOV	A,D_TMPrm
	sub	A,#4
	cmp	A,D_TMPrun
	bnc	$cAUTOmid
	br	cAUTOlow
COOLh2mCHK:
	MOV	A,D_TMPrun
	ADD	A,#5
	CMP	A,D_TMPrm
	BNC	$cAUTOmid
	BR	cAUTOhigh

	
	
	
;------------------------------------------------------------------------
;	cool mode aviod freeze
;	INPUT:	D_TMPinP
;	OUTPUT:	C_FRZ2m,f_FRZcnt,f_COMon,f_EXTon,f_FRZoff
;------------------------------------------------------------------------
PROTfrz:
	MOV	A,M_MODrun
	CMP	A,#n_Mheat
	BZ	$CLRfrz
	cmp	A,#n_Mfan
	BZ	$CLRfrz
PROTfrz1:
	BT	f_ERRTinP,$CLRfrz
	BT	f_FRZoff,$EXTfrz
	BF	o_COMon,$CLRfrz
	CMP	D_TMPinP,#n_TMPdsp+32+2		;TEMP pipe indoor <32 `F	[HIS-013] ADD 2 DEGREE F <1 DEGREE C
	BC	$FRZcheck			;yes>>
	CLR1	f_FRZcnt
	MOV	C_FRZ2m,#0
	RET
FRZcheck:
	BT	f_FRZcnt,$FRZchk0
	SET1	f_FRZcnt
	MOV	C_FRZ2m,#n_3m1s			;count to 2 minute
	RET
FRZchk0:
	CMP	C_FRZ2m,#0
	BZ	$$+2+1
	RET

;	XOR	A,A
	MOVW	AX,C_COM6mRUN
	CMPW	AX,#0+1
	BF	f_DRYing,$DRYchkFRZ
;	MOV	A,#36		;COUNT ERVRY 5 SEC
	CMPW	AX,#180+1
DRYchkFRZ:
	
	BC	$$+2+1
	RET



	SET1	f_FRZoff
	CALL	!OFF_COM
	RET

EXTfrz:
	CMP	D_TMPinP,#54+n_TMPdsp		;[HIS-013] 12 DEGREE;50+n_TMPdsp		;TEMP pipe indoor >=10 `C
	BNC	$CLRfrz				;YES>> exit the prodect freeze
NOextFRZ:	
	CALL	!OFF_COM
	RET
CLRfrz:
	CLR1	f_FRZoff
	CLR1	f_FRZcnt
	MOV	C_FRZ2m,#0
	RET

;------------------------------------------------------------------------
;************************************************************************
;
;************************************************************************
TMPhighCHK:
	CMP	D_TMPdef,#169+n_TMPdsp    ;76 degree c
	BNC	$HIGHtemp
	CMP	D_TMPdef,#152+n_TMPdsp		;67 degree c
	BC	$CLRhighTMP
	RET
HIGHtemp:
	SET1	f_TMPhigh
	CALL	!OFF_COM
	ret
CLRhighTMP:
	CLR1	f_TMPhigh
	RET
;************************************************************************
;
;************************************************************************
OUTfanCOOL:
	BT	o_COMon,$EXTon
	MOV	A,#180-15
	BF	f_TMPhigh,$$+4+3
	MOV	A,#180-30
	
	CMP	A,C_COM3mP
	BNC	$EXToff
	RET
EXToff:	
	CLR1	f_EXTon
	RET
EXTon:
	SET1	f_EXTon
	ret
;************************************************************************
;*	Module Name:	FANctrl						*
;*	Function:	FAN mode control				*
;*	Input:								*
;*	Output:								*
;*	Break:								*
;*	stack:								*
;************************************************************************
;	History:
;
;------------------------------------------------------------------------
FANctrl:
	CMP	M_MODrun,#n_Mfan
	BNZ	$NOmFAN
	CALL	!OFF_COM
	CALL	!OUTfanCOOL
	CALL	!OFFs4
	MOV	A,M_FANrun
	CMP	A,#n_FANauto
	BNE	$+2+3
	CALL	!COOLautoFAN

	MOV	M_FANsp,A
	SET1	f_FANon
	RET
NOmFAN:
	;...
	RET
;************************************************************************
;*	Module Name:	DRYctrl						*
;*	Function:	dry mode control				*
;*	Input:								*
;*	Output:								*
;*	Break:								*
;*	stack:								*
;************************************************************************
;	History:
;
;------------------------------------------------------------------------
DRYctrl:
	CMP	M_MODrun,#n_Mdry
	BNZ	$NOmDRY
	mov	M_FANrun,#n_FANlow
	BT	f_DRYing,$DRYtiming
;------------------------------------------------------------------------
;[his-014]	
	mov	A,D_TMPrun
	add	A,#4
	cmp	A,D_TMPrm
	BC	$DRYcool		;Tr>Ts+2
	
	mov	A,D_TMPrm
	add	A,#4
	cmp	A,D_TMPrun		;Tr<Ts-2
	BC	$DRYoff
;------------------------------------------------------------------------

DRYstart:
	mov	C_DRYtm,#10
	MOV	C_DRY1m,#n_1m1s

DRYtiming:
	BT	f_FRZoff,$DRYend
	BT	f_TMPhigh,$DRYend
	CMP	C_COM3mP,#0
	BNE	DRYend
	SET1	f_DRYing
	cmp	C_DRYtm,#5
	BNC	$DRYon
DRYoff:
	call	!OFF_COM	
	CALL	!OFFs4
	CALL	!OFFext
	mov	A,#n_FANlow
	mov	M_FANsp,A
	cmp	C_DRYtm,#0
	BNE	$+2+3
	CLR1	f_DRYing

	BR	DRYexit	
DRYon:
	CALL	!OFFs4
	SET1	f_EXTon
	mov	A,#n_FANlow
	mov	M_FANsp,A
	CMP	C_FAN3s,#0
	BNE	WAIT3s
	SET1	f_COMon

WAIT3s:
	
	BR	DRYexit				

DRYend:
	CALL	!OFFs4
	CALL	!OFFext
	mov	A,M_FANrun
	cmp	A,#n_FANauto
	BNE	$+2+3
	CALL	!COOLautoFAN
	mov	M_FANsp,A	
	
NOmDRY:
	CLR1	f_DRYing
	mov	C_DRYtm,#0
	
	BR	DRYexit


DRYcool:
	call	!COOLon
DRYexit:
	
	CALL	!PROTfrz		;cool mode aviod freeze
	CALL	!TMPhighCHK
	ret



;************************************************************************
;*	Module Name:	OFF2ON						*
;*	Function:	turn system on					*
;*	Input:								*
;*	Output:								*
;*	Break:								*
;*	stack:								*
;************************************************************************
;	History:
;
;------------------------------------------------------------------------
OFF2ON:

	BF	f_PWRon,$$+4+1
	RET
OFF2ON1:	
	MOV	M_LEDdigram,#n_TMPrm
	SET1	f_PWRon
	CLR1	f_SLEEP
	CLR1	f_TMRset
	mov	D_TMRon,#0

	RET
;************************************************************************
;*	Module Name:	ON2OFF						*
;*	Function:	turn xsystem off				*
;*	Input:								*
;*	Output:								*
;*	Break:								*
;*	stack:								*
;************************************************************************
;	History:
;
;------------------------------------------------------------------------
ON2OFF:
ON2OFF1:	
	MOV	M_LEDdigram,#n_TMPrm
	CLR1	f_SLEEP
	CLR1	f_TMRset
	mov	D_TMRon,#0	
	CALL	!OFF_COM
	CALL	!OFFs4
	CALL	!OFFext
	CLR1	f_HTR1on
	CLR1	f_PWRon
	CLR1	f_COOLquick
	RET


;========================================================================
;------------------------------------
;       Turn Compressor OFF
;------------------------------------
OFF_COM:
	CLR1    f_COMon
	;CLR1	f_Run1m
	RET
;========================================================================
;========================================================================
ONcomp:
	BSET	f_COMon
	RET
OFFcomp:
	BRES	f_COMon
	RET

;========================================================================
OFFs4:
	CMP	C_S42m,#0
	BNZ	$S4wait2m
	BRES	f_S4on
S4wait2m:
	RET
;========================================================================
OFFext:
	BRES	f_EXTon
	RET
;========================================================================
OFFfan:
;	BRES	o_FANout
	LD	A,#n_FANoff
	LD	M_FANsp,A
	RET	
;	END	

⌨️ 快捷键说明

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