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

📄 modctrl.c.bak

📁 该程序是NECupd78F9479的开发的代LCD的空调方案
💻 BAK
📖 第 1 页 / 共 2 页
字号:
#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 + -