中级会员
 
- 积分
- 336
- 金钱
- 336
- 注册时间
- 2018-5-14
- 在线时间
- 69 小时
|
发表于 2018-6-16 20:53:07
|
显示全部楼层
u8 KeyData,KeyDownFlag,KeyLosseFlag;
u8 KeyDownBuf[KEY_NUM];
u8 KeyLooseBuf[KEY_NUM];
u8 key_scan(void)
{
if(KEY1 == TURE)
{
KeyDownBuf[KEY1_F]++;
}
else
{
KeyLooseBuf[KEY1_F]++;
}
// 其它按键程序类似添加
if (KeyDownBuf[KEY1_F] >= KEY_LOOP_NUM)
{
KeyDownFlag |= (1<<KEY1_F);//KeyDownFlag 里面已经是按下的按键并且去抖后的值了。
}
if (KeyLooseBuf[KEY1_F] >= KEY_LOOP_NUM)
{
if (KeyDownFlag & (1<<KEY1_F))
{
KeyLosseFlag |= (1<<KEY1_F);//KeyLosseFlag里面的值就是按下又松开的按键
}
}
//下面可以根据KeyDownFlag的值和KeyLooseFlag的值给KeyData赋值即可。赋值以后记得根据情况清零两个标志即可。
}
找个低优先级中断,10ms延时,调用就行了。
PS:在网页上打字格式不好弄,做的有些简略,你可以自己补充想要的。
再PS:按键的程序不只是说着容易,而是真的没什么麻烦的。 |
|