捕获按键方法

本文介绍了C语言中用于处理按键输入的Get_Key函数,通过消抖机制解决按键误触发问题,并利用标志位跟踪按键状态,确保按键操作的准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*
Function name:Get_Key
Description:捕获键值
param:None
retval:键值
Remarks:
*/
u8 Get_Key(void)
{
	u8 key_value=0;
	static u8 key_flag=0;
	if((KEY1||KEY2||KEY3||KEY4)&&key_flag==0)
	{
		Delay_Ms(20);//消抖 防止误触
		if(KEY1)
		{
			key_value=1;
			key_flag=1;
		}
		if(KEY2)
		{
			key_value=2;
			key_flag=1;
		}
		if(KEY3)
		{
			key_value=3;
			key_flag=1;
		}
		if(KEY4)
		{
			key_value=4;
			key_flag=1;
		}
	}
	if(!(KEY1||KEY2||KEY3||KEY4)&&key_flag==1)//松手检测
	{
		key_flag=0;
	}
	return key_value;
}

        按键有按下和回弹两个步骤,所以要弄一个标志位判断按键从按下到回弹的两个步骤为执行一次,防止多个按键同时按下,同时还要消抖以防按键的接触不灵。

                                                                图1.按键原理图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值