求教大神一个按键扫描程序的编程思路,按键要实现的功能是按住后松开才算一次触发,目前我设置标志位可以实现一个按键的触发,但在原来基础上加上两个按键按下就没反应了,连原来的第一个按键也没反应,有关部分程序如下:
u8 key_up=1; //按键标志位,松开1,按下0
#define KEY1 GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_13)//读取按键1
u8 KEY_Scan(void)
{
u8 key=0;
/* 按键1扫描 */
if(key_up && KEY1==0)
{
delay_ms(10);
key_up=0;
}
else if(key_up==0 && KEY1==1)
{
delay_ms(10);
key_up=1;
if(KEY1==1 )
return key=KEY1_PRES;
}
else if(KEY==1)
key_up=1;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
参考原子哥按键例程,在key_scan里边修改,一般按键为按下触发,假设按键一端接地,if(KEY==0)
delay_ms(10);
if(KEY==0)
{
//按键响应
}
如果你想要松开触发
if(KEY==0)
delay_ms(10);
if(KEY==0)//按键已经按下
{
while(KEY!=0)//等待按键松开
{
delay_ms(10);
}
//按键已松开
//按键响应
}
这是我的思路,你可以试一下,多个按键把KEY改成KEY1,KEY2...就可以了
一周热门 更多>