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

📄 key.c

📁 通过74HC166采集按键信号
💻 C
字号:
//****************************************************************************
// @Project Includes
//****************************************************************************
#include "GLOBAL.H"
#include "Key.H"
#include "MAIN.H"
//****************************************************************************
// @Imported Global Variables
//****************************************************************************

//****************************************************************************
// @Global Variables
//****************************************************************************
bit Key_Press_Flag;
bit Key_Release_Flag;
bit Key_Exist_Flag;
unsigned char Key_Value;			//74HC166 value
unsigned char Key_Command_State;
unsigned char Key_Command_State_Old;
unsigned char Key_Command;
//****************************************************************************
// @User Code
//****************************************************************************
//**********Delay**********
void delay(unsigned int j)
{ 	
	while(j)
     j--;
}
//**********74HC165操作**********
unsigned char Key_GetData8(void)
{
	    unsigned char i;
		unsigned char Key_data=0;

		HC166_Disable;				//将并行口的数据锁存
        EA            =  0;
		delay(0xFF);
		EA            =  1;
		P1_1 = 0;
		_nop_();
		_nop_();
		_nop_();
		P1_1 = 1;
		HC166_Enable;
		EA            =  0;
        delay(0xFF);
		EA            =  1;

		for(i=0;i<8;i++)
		  {
			 Key_data=Key_data<<1;
             if(P1_0==1)
			   Key_data=Key_data|0x01;
			 P1_1 = 0;
			 _nop_();
			 _nop_();
			 _nop_();
			 P1_1 = 1;
		  }

		return(Key_data);
}
//**********Key值处理**********
void Key_Read(void)
{
        Key_Command_State_Old = Key_Command_State;

		Key_Value = Key_GetData8();		

		switch(Key_Value)
		  {
		     case Key_Mode_Select:
			    {
				    Key_Command_State = Key_Mode_Select;
					Key_Press_Flag = 1;
					Key_Release_Flag = 0;
					break;
				}
			 case Key_Circle_Select:
			    {
				    Key_Command_State = Key_Circle_Select;
					Key_Press_Flag = 1;
					Key_Release_Flag = 0;
					break;
				}
			 case Key_Temperature_Up:
			    {
					Key_Command_State = Key_Temperature_Up;
					Key_Press_Flag = 1;
					Key_Release_Flag = 0;
					break;
				}
			 case Key_Temperature_Down:
			    {
				    Key_Command_State = Key_Temperature_Down;
					Key_Press_Flag = 1;
					Key_Release_Flag = 0;
					break;
				}
			 case Key_Fan_Up:
			    {
				    Key_Command_State = Key_Fan_Up;
					Key_Press_Flag = 1;
					Key_Release_Flag = 0;
					break;
				}
			 case Key_Fan_Down:
			    {
					Key_Command_State = Key_Fan_Down;
					Key_Press_Flag = 1;
					Key_Release_Flag = 0;
					break;
				}
			 case Key_Auto_Enable:
			    {
				    Key_Command_State = Key_Auto_Enable;
					Key_Press_Flag = 1;
					Key_Release_Flag = 0;
					break;
				}
			 case Key_Window_Heat:
			    {
				    Key_Command_State = Key_Window_Heat;
					Key_Press_Flag = 1;
					Key_Release_Flag = 0;
					break;
				}
			 default:
			    {
				    if(P1_7==0)
					  {
				         Key_Command_State = Key_AC_In;
					     Key_Press_Flag = 1;
					     Key_Release_Flag = 0;					  
					  }
					else
					  {
					  	 Key_Release_Flag = 1;
					  }
					
					break;
				}		 
		  }	 
		
		if(Key_Release_Flag)
		  {
		  	 if(Key_Press_Flag)
			   Key_Exist_Flag = 1;
			 else
			   Key_Command = 0;			 //no command
		  }

		if(Key_Command_State_Old == Key_Command_State)
		  {
		     if(Key_Exist_Flag)
			   {
			      Key_Command = Key_Command_State;
				  Key_Command_State = 0;
				  Key_Command_State_Old = 0;
				  Key_Exist_Flag = 0;
				  Key_Press_Flag = 0;
			   }
		  }
	 
}

⌨️ 快捷键说明

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