key.c.bak

来自「该程序是NECupd78F9479的开发的代LCD的空调方案」· BAK 代码 · 共 555 行

BAK
555
字号
#pragma NOP
#pragma sfr

#include "define.h"


unsigned char C_tmk1;   
unsigned char C_tmk2;   
unsigned char C_tmk3;   
unsigned char C_tmk4;   
unsigned char C_tmk5;   
unsigned char C_tmk6;   
unsigned char C_tmk7;   
unsigned char C_tmk8;  
unsigned char C_tmk9;  
unsigned char keyvalue;
unsigned char keybuf;
unsigned char C_Settime;

sreg unsigned char flag;
#define f_tkey flag.0
#define f_keyok flag.1
#define f_settm flag.2
#define f_keydw2 flag.3
#define f_keydw3 flag.4
#define f_keydw4 flag.5
#define f_keydw5 flag.6
#define f_keydw6 flag.7

sreg unsigned char flagkey;
#define f_keydw7 flagkey.0
#define f_keydw8 flagkey.1
#define f_keydw9 flagkey.2
#define f_keydw1 flagkey.3
#define f_combkey flagkey.4
#define f_slpkey 	flagkey.5


//=========================================================
sreg unsigned char M_flag; 

#define f_iicen    M_flag.6

extern sreg unsigned char V_flag;
#define f_COOLonly    V_flag.3

extern sreg unsigned char M_flag0;                                           
#define f_PWRon				M_flag0.0					//flag of power on  

extern sreg unsigned char M_flag4;
#define f_SLEEP   	M_flag4.7

extern sreg unsigned char M_flag; 
#define f_rmtok		M_flag.0									//remote signal receive ok
#define f_PWRon1		M_flag.1										//power on flag


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

extern sreg unsigned char V_flag;        
#define f_temp				V_flag.0    

extern unsigned char D_TMPset;
extern unsigned char M_FANset;
extern unsigned char M_MODset;
extern unsigned char C_RMT1s,C_cnt8,C_SettimeB,D_TMPsetp;
extern unsigned char M_MODrun;

//=========================================================


//=========================================================
void BEEP1tms(void);
void Timeset(void);  
void Powerchk(void);  
void Modechk(void);   
void Fanchk(void);    
void Tempset(void);   
void Keychk(void);     
void Keydec(void);     
void Slpkey(void);
void Dspctrl(void);
unsigned char keydate(unsigned char k);
void keyfunc1(unsigned char x,unsigned char y);
//=========================================================
void Keyctrl()
{	if(f_tkey)
	{f_tkey=0;
	Keychk();
	Keydec();
}
}


//========================================================
void Keydec()
{
	if(f_keyok)
		{	f_keyok=1;
			f_iicen=1;
			C_RMT1s=2;
			Powerchk();
			Modechk();
			Fanchk();
			Tempset();
			Timeset();
			Slpkey();
			Dspctrl();
			keyvalue=0;
		}
}

void Slpkey()
{if(f_PWRon1)
	{	
		if(keyvalue==8)
		{	f_slpkey=1;
			if(f_SLEEP)
				f_SLEEP=0;
			else 
				f_SLEEP=1;
				BEEP1tms();
		}
	}	
}
void Timeset()
{if(keyvalue==6||keyvalue==7)
		{	if(C_Settime>=0&&C_Settime<=48)
				{	
					C_cnt8=0;	
					if(keyvalue==6)  
					{	
						BEEP1tms();
				
						C_Settime++;
					}
				if(keyvalue==7)
					{BEEP1tms();
						C_Settime--;
				
					}
					
				}
				if(C_Settime==255)
					{C_Settime=48;	
					}
				if(C_Settime==0)
				{C_Settime=0;
					f_toff=0;
				
				}
				if(C_Settime>48)
				{	C_Settime=0;
					f_toff=0;
			
				}
				if(C_Settime!=0)
				{
					if(f_PWRon1)
						{f_toff=1;
						}
					else
						{f_settm=1;
							f_ton=1;
						}
				}
				else
					{		f_settm=0;
							f_ton=0;
							f_toff=0;
					}
	C_SettimeB=C_Settime;
	}
}
//=====================================================
void Tempset()
{ if(f_PWRon1)
	{	if(M_MODset==n_Mheat||M_MODset==n_Mcool)
			
		{	if(f_temp)
			{
					if(D_TMPsetp>=61&&D_TMPsetp<=86)
					{	if(keyvalue==5)
		
							D_TMPsetp--;
						if(keyvalue==4)
							D_TMPsetp++;
							BEEP1tms();
					}
				if(D_TMPsetp>86)
					D_TMPsetp=86;
				if(D_TMPsetp<61)
					D_TMPsetp=61;
			}
		else
			{
				if(D_TMPset>=16&&D_TMPset<=30)
					{	if(keyvalue==5)
		
							D_TMPset--;
						if(keyvalue==4)
							D_TMPset++;
							BEEP1tms();
					}
				if(D_TMPset>30)
					D_TMPset=30;
				if(D_TMPset<16)
					D_TMPset=16;
			}
		}
	}
}

void Fanchk()
{if(f_PWRon1)
	{
	if(M_MODset==n_Mdry||M_MODrun==n_Mdry)
		return;
	if(keyvalue==3)
		{	M_FANset++;
			BEEP1tms();
			if(M_FANset>4)
					M_FANset=2;
				}
		}
}

void Modechk()
{if(f_PWRon1)
	{
		if(keyvalue==2)
			{BEEP1tms();
				M_MODset++;					
				if(f_COOLonly)
					if(M_MODset==3)
						 M_MODset=4;
				if(M_MODset>4)
						M_MODset=0;
				}
	}
}

void Powerchk()
{
	if(keyvalue==1)	
		{BEEP1tms();
			if(f_PWRon1)
			{	
				f_PWRon1=0;
			}
		else
			f_PWRon1=1;
			
			f_settm=0;
			f_toff=0;
			C_Settime=0;
		}
}
/*
#define I_pow			P6.7
#define I_mod  		P6.6
#define I_fmod		P6.5
#define I_temup		P3.4
#define I_temdw		P3.3
#define I_tmup		P3.2
#define I_tmdw		P2.5
#define I_slp			P2.4
*/
void Keychk()
{
	if(I_pow)
		{
			if(!f_keydw1)
				C_tmk1=60;
			else
				{
					if(C_tmk1==0)
						{	keyvalue=1;		
							keybuf=1;
						}		
					else
						keyvalue=0;
						
						f_keydw1=0;
				}
		}
	else
		{if(!f_keydw1)
			{
				f_keydw1=1;
				C_tmk1=60;
			}
		}
		
		
	//=====================================
	if(I_mod)
		{
			if(!f_keydw2)
				C_tmk2=60;
			else
				{
					if(C_tmk2==0)
					{	
						keyvalue=2;		
						keybuf=keybuf+keyvalue;
					}					
					else
						keyvalue=0;
						
						f_keydw2=0;
				}
		}
	else
		{if(!f_keydw2)
			{
				f_keydw2=1;
				C_tmk2=60;
			}
		}
//====================================
	if(I_fmod)
		{
			if(!f_keydw3)
				C_tmk3=60;
			else
				{
					if(C_tmk3==0)
					{
						keyvalue=3;	
						keybuf=keybuf+keyvalue;
					}						
					else
						keyvalue=0;
						
						f_keydw3=0;
				}
		}
	else
		{if(!f_keydw3)
			{
				f_keydw3=1;
				C_tmk3=60;
			}
		}
//=========================================
	if(I_temup)
		{
			if(!f_keydw4)
				C_tmk4=60;
			else
				{
					if(C_tmk4==0)
						{
							keyvalue=4;							
							keybuf=keybuf+keyvalue;
						}
					else
						keyvalue=0;
						
						f_keydw4=0;
				}
		}
	else
		{if(!f_keydw4)
			{
				f_keydw4=1;
				C_tmk4=60;
			}
		}
//=============================================
	if(I_temdw)
		{
			if(!f_keydw5)
				C_tmk5=60;
			else
				{
					if(C_tmk5==0)
						{
							keyvalue=5;							
							keybuf=keybuf+keyvalue;
						}
					else
						keyvalue=0;
						
						f_keydw5=0;
				}
		}
	else
		{if(!f_keydw5)
			{
				f_keydw5=1;
				C_tmk5=60;
			}
		}
//===============================================
	
		//===============================================
	if(I_slp)
		{
			if(!f_keydw8)
				C_tmk8=60;
			else
				{
					if(C_tmk8==0)
					{
						keyvalue=8;				
						keybuf=keybuf+keyvalue;			
					}
					else
						keyvalue=0;
						
						f_keydw8=0;
				}
		}
	else
		{if(!f_keydw8)
			{
				f_keydw8=1;
				C_tmk8=60;
			}
		}		
//==========================================
//	if(I_tmdw&&I_tmup)							//this section need to check for at the end of check port routine
//		{
//			if(!f_keydw9)
//				{
//				C_tmk9=60;
//				f_combkey=0;
//			}
//			else
//				{
//					keybuf=0;
//					if(C_tmk9==0)
//					{
//								
//						keybuf=70;	
//								
//					}
//					else
//						keyvalue=0;
//						
//						f_keydw9=0;
//				}
//		}
//else
//		if(!I_tmdw&&!I_tmup)
//			{f_combkey=1;
//			if(!f_keydw9)
//				{
//				f_keydw9=1;
//				C_tmk9=60;
//				}
//			}												
//==============================			
	if(I_tmup)
		{
			if(!f_keydw6)
				C_tmk6=60;
			else
				{//if(!f_combkey)
					//{
							if(C_tmk6==0)
						{
							keyvalue=6;							
							keybuf=keybuf+keyvalue;
						}
						else
							keyvalue=0;
							
							f_keydw6=0;
					//	}
				}
		}
	else
		{if(!f_keydw6)
			if(!f_combkey)
			{
				f_keydw6=1;
				C_tmk6=60;
			}
		}						
	//===============================================
	if(I_tmdw)
		{
			if(!f_keydw7)
				C_tmk7=60;
			else
				{
					//if(!f_combkey)
					//{
							if(C_tmk7==0)
						{
							keyvalue=7;		
							keybuf=keybuf+keyvalue;					
						}
						else
							keyvalue=0;
							
							f_keydw7=0;
						//}
				}
		}
	else
		{if(!f_keydw7)
			if(!f_combkey)
			{
				f_keydw7=1;
				C_tmk7=60;
			}
		}									
//===========================================
//check key value 
//===========================================		
	switch(keybuf)
	{
		case	1: 	f_keyok=1;				//power
							keyvalue=1;
							break;
		case	2: 	f_keyok=1;				//mode
							keyvalue=2;
							break;
		case	3: 	f_keyok=1;
							keyvalue=3;				//fan mode
							break;
		case	4: 	f_keyok=1;
							keyvalue=4;				//temp up set
							break;
		case	5: 	f_keyok=1;
							keyvalue=5;				//temp down set
							break;
		case	6: f_keyok=1;
							keyvalue=6;				//timer up set
							break;
		case	7: f_keyok=1;			//time down set
							keyvalue=7;
							break;
		case	8: 	f_keyok=1;				
							keyvalue=8;				//sleep set
							break;
	//	case	70: 	f_keyok=1;
	//					keyvalue=9;				//clear time set
	//						break;
		default :f_keyok=0;
		
	}
	if(f_keyok)
		{C_tmk1=C_tmk2=C_tmk3=C_tmk4=C_tmk5=C_tmk6=C_tmk7=C_tmk8=C_tmk9=flagkey=0;
			flag&=0b00000110;
			
		}
	keybuf=0;
}

⌨️ 快捷键说明

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