📄 idwracmod.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 + -