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

📄 keyscan_c.c

📁 yaobaiji源程序,pic16c54,picc8.05,
💻 C
字号:
//#include	<pic.h>
#include	<pic16f5x.h>
#include	"define.h"
volatile	unsigned char	key_delay1S_0,key_delay50ms;
extern	volatile	unsigned char 	auto_delay_15s_1,auto_delay_15s_0;
extern	volatile	unsigned char	t1,t2,t3;

void	KeyScan();
//----------------------------------------------------------------------
//函数功能:按键延时
//输入参数:
//返回参数:
//创建时期:
//----------------------------------------------------------------------
fastcall	unsigned char	key_delay()
{	
	if(have_key_fg)
		return(0);	
	key_delay50ms--;
	if(!key_delay50ms)
		{
			key_delay50ms=10;	
			have_key_fg=1;//have key
			beep_fg=1;
			return(1);
		}
	return(0);
}
//----------------------------------------------------------------------
//函数功能:电源键处理
//输入参数:
//返回参数:
//创建时期:
//----------------------------------------------------------------------
fastcall	void	power_key_cl( )
{
	if(!key_delay())
		return;
//	if(!have_key_fg)
//		return;	
	power_fg=!power_fg;//	flag0^=0x01;
	t1=0;
	t2=0;
	t3=0;
	auto_fg0=0;
	auto_fg1=0;
	status_flag=0;

//	have_key_fg=1;
	key_delay1S_fg=1;
}
//----------------------------------------------------------------------
//函数功能:自动1键处理
//输入参数:
//返回参数:
//创建时期:
//----------------------------------------------------------------------
fastcall	void	auto_key1_cl() 
{
//	key_delay();
	if((!key_delay())||auto_fg0)
		return;
//	if(have_key_fg||auto_fg0)
//		return;
	auto_fg0=1;
	auto_fg1=0;
	status_flag=8;
//	beep_fg=1;
	key_delay1S_fg=1;
//	have_key_fg=1;
//	auto_delay_15s_0=100;
	auto_delay_15s_1=15;	
	if(!_50_60_fg)	
		auto_delay_15s_0=100;//10ms*100=1s
	else	
		auto_delay_15s_0=120;//10ms*100=1s
}
//----------------------------------------------------------------------
//函数功能:自动2键处理
//输入参数:
//返回参数:
//创建时期:
//----------------------------------------------------------------------
fastcall	void	auto_key2_cl()
{
	if((!key_delay())||auto_fg1)
		return;
//	if(have_key_fg||auto_fg1)
//		return;	
	auto_fg0=0;
	auto_fg1=1;
	status_flag=2;
//	beep_fg=1;
	key_delay1S_fg=1;
//	have_key_fg=1;
//	auto_delay_15s_0=100;
	auto_delay_15s_1=15;
	if(!_50_60_fg)	
		auto_delay_15s_0=100;//10ms*100=1s
	else	
		auto_delay_15s_0=120;//10ms*100=1s
}
//----------------------------------------------------------------------
//函数功能:高速键处理
//输入参数:
//返回参数:
//创建时期:
//----------------------------------------------------------------------
fastcall	void	gao_key_cl() 
{
	if((!key_delay())||(!(auto_fg0||auto_fg1)&&gao_fg))
		return;
	else
	{
	status_flag=8;
	auto_fg0=0;
	auto_fg1=0;
//	beep_fg=1;
	key_delay1S_fg=1;
//	have_key_fg=1;
	}
}
//----------------------------------------------------------------------
//函数功能:中速键处理
//输入参数:
//返回参数:
//创建时期:
//----------------------------------------------------------------------       
fastcall	void	zhong_key_cl()
{
	if((!key_delay())||(!(auto_fg0||auto_fg1)&&zhong_fg))
		return;
	else
	{
	status_flag=4;
	auto_fg0=0;
	auto_fg1=0;
//	beep_fg=1;
	key_delay1S_fg=1;
//	have_key_fg=1;	
	}
}
//----------------------------------------------------------------------
//函数功能:低速键处理
//输入参数:
//返回参数:
//创建时期:
//---------------------------------------------------------------------- 
fastcall	void	di_key_cl()
{

	if((!key_delay())||(!(auto_fg0||auto_fg1)&&di_fg))
		return;
	else
	{
	status_flag=2;
	auto_fg0=0;
	auto_fg1=0;
//	beep_fg=1;
	key_delay1S_fg=1;
//	have_key_fg=1;
	}
}


//----------------------------------------------------------------------
//函数功能:按键扫扫描函数
//输入参数:
//返回参数:
//创建时期:
//----------------------------------------------------------------------
void	KeyScan() 
{	
	if(!power_key)
		power_key_cl();	
//	if(power_fg)
	else	{
		if(!auto_key1)
			auto_key1_cl();
		else
		{
			if(!auto_key2)
				auto_key2_cl();
			else
			{
				if(!gao_key	)
					gao_key_cl();
				else
				{	if(!zhong_key)
						zhong_key_cl();
					else
						{	
						if(!di_key)
							{di_key_cl();} 
						else
						{	have_key_fg=0;	key_delay50ms=10;}
						}
				}
			}
		}	
	}
}

⌨️ 快捷键说明

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