📄 modctrl.c.bak
字号:
#include "define.h"
void MODrunP(void);
void OVCpro(void);
void Action(void);
//===============================================================================================
//
//===============================================================================================
unsigned char M_MODset; //target mode
unsigned char M_MODrun; //run mode now
unsigned char M_auto; //rum mode now in auto mode
unsigned char M_FANrun; //run fanmode now
unsigned char M_FANset; //target fanmode
unsigned char C_cmprun; //compressor run time
unsigned char C_ice; //time of check ice temprature
unsigned char MODE_BUF; //Mode buffer
unsigned char C_curtpro; //over current value times
unsigned char C_cmp10sec; //10 seconds after compressor power on,to check coil temp,and to protect cold wind
unsigned char M_FANsp; //fan run speed
unsigned char T_FRZend; //frezze exit temprature
unsigned char D_TMPset; //target temprature of set
unsigned char D_Dsptmp; //display of set temprature
unsigned char T_FRZstart; //temprature of coil of entry cold wind protection
unsigned char C_FRZ3m; // after 3 minuter for freeze , to stop compressor
unsigned char C_6min,C_4min; //in dry mode ,6min on ,4 min off cmp
unsigned char C_COM3mfre; //after 3min of cold wind stop cmpressor ,check coil temprature
unsigned char C_ice1min; //ice mode, if PTC on delay 1 minuter
unsigned char C_10minice; //ice mode 10 minuter
unsigned char C_cnt1; //counter1
unsigned char C_3mincurt; // overcurrent protection maintain 3minuter
unsigned char C_3seccurt; //check current value
unsigned char C_COM6mP; //compressor 6 minuters on
unsigned char C_COM3mP; //compressor 3 minuters off
unsigned char C_RMT1s; //delay 2 seconds after remoter ok
unsigned char C_ptc2mP;
unsigned char C_wotp1,T_pbuzz,C_buzz;
//================================================================================================
//bit definition
//================================================================================================
sreg unsigned char M_flag0;
#define f_PWRon M_flag0.0 //flag of power on
#define f_4sdelay M_flag0.1 // 4 valve delay enalbe
#define f_EXTon M_flag0.2 // outfan flag enable
#define f_1ston M_flag0.3 // first entry fan mode
#define f_S4on M_flag0.4 // flag 4valve control
#define f_COMon M_flag0.5 // flag compressor control
#define f_curtpro M_flag0.6 // flag of over current protection
#define f_crtproexit M_flag0.7 //overcurrent protect exit flag
sreg unsigned char M_flag3;
#define f_Hstpcmp M_flag3.0 //in hot mode ,flag control in fan atfter compressor stop
#define f_ERRTcoil M_flag3.1 //coil erro flag
#define f_ERRTrm M_flag3.2 //room ad erro
#define f_MODchk M_flag3.3 //auto mode check
#define F_coilchk M_flag3.4 //coil temprature check onetime flag
#define f_coolwindpro M_flag3.5 //cold wind protection flag
#define f_FRZoff M_flag3.6 //frezze off flag
#define f_FRZcnt M_flag3.7 //flag of D_TMPcoil<0 degree one time check
sreg unsigned char M_flag4;
#define f_Hcoil M_flag4.0 //flag of One time check
#define f_1sec M_flag4.1 //1 second flag
#define f_ice M_flag4.2 //frezze flag
#define f_ice1 M_flag4.3 //PTC on ,flag for it
#define f_PTC M_flag4.4 // PTC control flag
#define f_1secA M_flag4.5 // 1 second flag
#define f_cmp1min M_flag4.6 // 1 min flag for compressor run
#define f_SLEEP M_flag4.7 //sleep flag of remote code
sreg unsigned char M_flagwot;
#define f_wotcnt M_flagwot.0
#define f_wotin M_flagwot.1
#define f_1stwoton M_flagwot.2
#define f_wotcntx M_flagwot.3
#define f_highwot M_flagwot.4
//====================================================================================================
//declaration for external
//====================================================================================================
extern unsigned char D_TMPrm;
extern unsigned char F_FLGerr;
extern unsigned char C_BUZmod;
extern unsigned char C_BUZcnt;
extern unsigned char D_ADkey;
extern unsigned char D_TMPcoil;
extern unsigned char D_ADice;
extern unsigned char C_SLP1h;
extern unsigned char C_SLPstp;
extern unsigned char C_Settime;
extern unsigned char C_wotrun;
extern unsigned char C_wotp;
extern sreg unsigned char V_flag;
#define f_temp V_flag.0
#define f_quick V_flag.1
#define f_mode V_flag.2
#define f_COOLonly V_flag.3
#define f_capa V_flag.4
#define f_SLPIN V_flag.5
extern sreg unsigned char M_flag10;
#define f_swok M_flag10.1
extern sreg unsigned char M_flag;
#define f_ton M_flag.3 //time set of power on
#define f_toff M_flag.4 //time set of power off
void CLRfrz(void);
void MODrunP(void);
void HEATctrl(void);
void Vheator(void);
void OFF_COM(void);
void OFFctrl(void);
void MODEauto(void);
void COOLctrl(void);
void DRYctrl(void);
void FANctrl(void);
void Heatcom(void);
void BEEP3tms(void);
void Coolwindpro(void);
void MautoCHK(void);
void COOLcomp(void);
void PROTfrz(void);
void coolOFFchk(void);
void COOLautoFAN(void);
void EXTfrz(void);
void COOLon(void);
void Vhighcoil(void);
void PROwot(void);
void Vfreeze(void);
void Sleepini(void);
void Warmwind(void);
void BEEP1tms(void);
//======================================================================================
//
//======================================================================================
void modctrl()
{
if(C_RMT1s==0)
{if(!f_ton&&f_swok) //time power on or swing is not ok ,cant enter mode control
{if(f_PWRon)
{ if(M_MODset==M_MODrun)
{MODrunP();
}
else
{ f_SLPIN=0; //for sleep mode ,if mode change, should clear the flag f_SLPIN
if(M_MODset==n_Mauto)
{
MODrunP();
}
else
{
if(M_MODset==n_Mheat||M_MODrun==n_Mheat)
{ if(compctrl)
{ OFF_COM();
f_EXTon=0;
f_S4on=0;
C_COM6mP=0;
// if(M_MODrun==n_Mheat) //for s4 delay
// f_4sdelay=1;
M_MODrun=M_MODset; //update moderun
Action();
return;
}
}
MODrunP();
M_auto=M_MODrun; //M_auto is used in auto mode
}
}
}
else
{
OFFctrl();
}
}
else
{
OFFctrl();
}
Action();
}
}
//===========================================================================================
//
//===========================================================================================
void Action()
{if(!f_mode&&M_MODrun==n_Mheat)
{if(f_PTC)
{O_ptc=1;
}
else
{if(O_ptc)
C_COM3mP=180;
O_ptc=0;
}
return; //must be return
}
if(f_COMon)
{
if(!compctrl)
{ C_COM6mP=6;
C_cmp10sec=10;
f_cmp1min=0; //clear f_cmp1min for compressor run time count
}
compctrl=1;
if(f_PTC)
O_ptc=1;
else
{ if(O_ptc)
C_ptc2mP=2;
O_ptc=0;
}
if(f_cmp1min)
{
f_cmp1min=0;
C_cmprun++;
}
if(f_EXTon)
outfanctrl=1;
else
outfanctrl=0;
if(f_S4on==1)
s4vctrl=1;
else
s4vctrl=0;
}
else
{
if(!f_PWRon)
{
if(compctrl)
{ C_COM3mP=180;
C_cmp10sec=0;
}
O_ptc=0;
compctrl=0;
C_cmprun=0;
}
else
{
if(C_COM6mP==0)
{ if(compctrl)
{
C_COM3mP=180;
C_COM3mfre=180; //frezze use
}
O_ptc=0;
compctrl=0;
C_cmprun=0;
}
}
//=======================
//========================
if(f_EXTon)
outfanctrl=1;
else
outfanctrl=0;
//========================
if(f_S4on==1)
s4vctrl=1;
else
{
if(f_4sdelay)
{ if(C_COM3mP==60) //heat mode switch to other mode s4 stop delay 120 seconds.
{
s4vctrl=0;
f_4sdelay=0;
}
}
else
s4vctrl=0;
}
}
}
//===========================================================================================
//
//===========================================================================================
void MODrunP()
{ M_FANrun=M_FANset;
if(f_PWRon)
{F_FLGerr&=3;
if(F_FLGerr!=3) // AD sample no erro
{
OVCpro();
MODEauto();
COOLctrl();
DRYctrl();
FANctrl();
HEATctrl();
}
else
{OFFctrl();
}
}
else
{OFFctrl();
}
}
void Vheator()
{unsigned char reg1=0,reg2=0;
if(!f_mode)
return;
if(!compctrl)
return;
//if(f_ice||f_ice1)
// return;
if(M_MODset==n_Mauto)
{ reg1=2;
reg2=3;
}
if(O_ptc)
{
if((M_FANsp!=2||M_FANsp!=1)&&D_TMPcoil>=97&&D_TMPrm>=66||D_TMPrm>=(D_TMPset+40+4-reg2))
f_PTC=0;
}
else
{
if(M_FANsp<3&&D_TMPcoil<=89&&D_TMPrm<=63&&D_TMPrm<=(D_TMPset+40+1+reg1))
if(C_ptc2mP==0) //PTC operation 2 minuters interval time needed;
f_PTC=1;
}
}
//===========================================================================================
//
//===========================================================================================
void HEATctrl()
{if(f_PWRon)
{if(M_MODrun==n_Mheat)
{ if( (!f_ice)&&(!f_ice1) )
{
Sleepini();
Heatcom();
Coolwindpro();//*
Warmwind(); //*
Vhighcoil(); //*
Vheator(); //*
}
Vfreeze(); //*
}
}
}
//===========================================================================================
//
//===========================================================================================
void Warmwind() // continue to operate 30 seconds infan after compressor stop in heat mode
{ if(!f_mode)
{
if(!O_ptc)
{
if(C_COM3mP>165)
{
M_FANsp=3;
}
else
{
M_FANsp=0;
}
}
}
else
{
if(!compctrl)
{
if(C_COM3mP>150)
{
M_FANsp=3;
}
else
{
M_FANsp=0;
}
}
}
}
void Vfreeze()
{ if(!f_mode)
return;
if(!f_ice)
{if(compctrl)
{if(f_ice1==1&&C_ice1min==0)
{ f_ice=1;
f_ice1=0;
f_EXTon=0;
f_S4on=0;
// M_FANset=0;
M_FANsp=0;
C_10minice=10;
//M_MODset=5;
return;
}
if(!f_ice1)
{if(C_cmprun>=45)
{if(D_ADice<=48)
{
if(f_1secA)
{f_1secA=0;
C_ice++;
}
if(C_ice>=8)
{ C_ice=0;
if(f_PTC)
{ f_ice1=1;
f_PTC=0;
C_ice1min=60;
}
else
{ f_ice=1;
f_EXTon=0;
f_S4on=0;
M_FANset=0;
C_10minice=10;
}
}
}
else
{C_ice=0;
}
}
}
}
}
else
{if(C_10minice==0||D_ADice>85)
{
{ f_ice=0;
f_ice1=0;
//f_COMon=0;
C_cmp10sec=10; //cool wind protect start again
C_cmprun=0;
M_MODset=n_Mheat;
f_EXTon=1;
}
}
}
}
//===========================================================================================
//
//===========================================================================================
void Vhighcoil()
{ if(!f_mode)
return;
if(compctrl)
{if(f_Hcoil)
{if(D_TMPcoil<96)
{ f_Hcoil=0;
f_EXTon=1;
}
}
else
{if(compctrl)
{if(D_TMPcoil>106)
{
if(f_1sec==1)
{ f_1sec=0;
C_cnt1++;
}
if(C_cnt1>7)
{ C_cnt1=0;
f_Hcoil=1;
f_EXTon=0;
}
}
else{
C_cnt1=0;
}
}
}
}
}
//===========================================================================================
//
//===========================================================================================
void Coolwindpro()
{if(!f_mode)
return;
if(compctrl)
{if(C_cmp10sec==0||D_TMPcoil>68)
M_FANsp=M_FANrun;
}
}
//====================================================================================
//
//====================================================================================
void Heatcom()
{if(!f_mode) //mobile aircon for only heator
{
f_S4on=0;
f_EXTon=0;
if(O_ptc)
{if(D_TMPrm>=(D_TMPset+40+5))
f_PTC=0;
}
else
{if(D_TMPrm<=(D_TMPset+40+3))
f_PTC=1;
}
}
else
{
f_S4on=1;
if(compctrl)
{ f_4sdelay=1;
if(D_TMPrm>=(D_TMPset+40+5))
{ f_COMon=0;
f_EXTon=0;
f_Hstpcmp=1;
f_S4on=0;
// if(C_COM6mP==0)
// M_FANsp=0;
}
}
else
{ M_FANsp=0;
if(D_TMPrm<=(D_TMPset+40+3))
{ f_S4on=1;
if(f_ERRTcoil||f_ERRTrm)
{
OFF_COM();
F_coilchk=0;
f_EXTon=0;
}
else
{
if(C_COM3mP==0)
{
f_EXTon=1;
f_COMon=1;
}
else
M_FANsp=0;
}
}
else
{ OFF_COM();
F_coilchk=0;
f_EXTon=0;
// if(!f_mode) //only mobile aircon use
// return;
// if(!f_coolwindpro)
// {
// if(C_COM3mP==150&&f_Hstpcmp) // when 30 seconds later can stop the infan in heat mode
// { f_Hstpcmp=0;
// M_FANsp=0;
// }
// else
// {if(f_Hstpcmp)
// M_FANsp=n_FANlow;
// }
// }
}
}
}
}
//===========================================================================================
//
//===========================================================================================
void COOLon()
{if((f_ERRTcoil==1)||(f_ERRTrm==1)) //if there is erro for coil sample,but stop comp
{
f_COMon=0;
f_EXTon=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -