按键中断消抖--2

本文介绍了按键中断处理的方法,包括按键状态变量`g_ucKeySta`的使用,通过两次按键扫描比较来确认按键是否真正按下,以及利用定时器进行延时处理,避免按键抖动造成误判。在中断服务函数`ISR()`中,只有当`g_ucKeyCnt`为0时才会采集新的按键值,并设置延时计数。这种策略有效地实现了按键消抖,提高了系统稳定性。
摘要由CSDN通过智能技术生成
外部中断按键处理
 
uchar g_ucKeyVal=0;
uchar g_ucKeyCnt=0;  
uchar g_ucKeySta=0;  代表有无按键按下
 
u8 KeyDeal(void) //获取按键值  ---记住不要延时
   return data
}
//对获取键值,进行一下正确性处理
//关键字: g_ucKeySta  代表按下状态
//                    只要按下不松开,状态一直为1
//                    只要松开就为0
u8 KeyScan(void)
{
    key1=KeyScan();
    if(key1!=0xff)
    {
         key2=KeyScan();
         if(key1==key2)
         {
            g_ucKeySta=1;
         }
         else
            g_ucKeySta=0;
     }
     else <
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值