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