单片机按键扫描函数

按键扫描(支持连续按)

检测按键IO口的高低电平

u8 KEY_Scan(void)
{
	if(KEY按下)
	{
		delay_ms(10);//延时10-20ms 消蚪
		if(KEY确实按下)
		{
			return KEY_Value;
		}
		return 无效值;
	}
}

按键扫描(不支持连续按)

检测高低电平的变化(上升沿,下降沿)

u8 LEY_Scan(void)
{
	static u8 key_up = 1;
	if(key_up&&KEY按下)
	{
		delay_ms(10);//延时消抖
		key_up=0;//标记这次key已经按下
		if(KEY确实按下)
		{
			return KEY_Value; 
		}
		else if(KEY 没有按下)key_up=1;
		return 没有按下; 
	}
}

按键扫描(二合一)

传入参数mode 如果mode=1则支持连续按

u8 KEY_Scan(u8 mode)
{
	static u8 key_up=1;
	if(mode ==1 )key_up=1;//支持连续按
	if(key_up&&KEY按下)
	{
		delay_ms(10);//延时消抖
		key_up=0;//标记这次key已经按下
		if(KEY确实按下)
		{
			return KEY_Value; 
		}
		else if(KEY没有按下)key_up=1;
		return 没有按下;
	}
}

你可能感兴趣的:(学习,笔记)