zoukankan      html  css  js  c++  java
  • 按键中断消抖--2

    外部中断按键处理

    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
             g_ucKeySta=0;
         return key1;
    }

    //定时器中  进行减操作
    //作用:延时处理
    void time0()
    {
        if(g_ucKeyCnt) g_ucKeyCnt--;
        //一直按
        if(g_ucKeyCnt==0)&&(g_ucKeySta)
                 g_ucKeyCnt=20;
    }

    // g_ucKeyCnt   键值延时
    // 核心 当中断发生后
    //获取到键值延时为0,则把键值延时赋值
    //在些期间,再有中断发生,不会再次采集按键(取巧避过延时)
    void ISR ()
    {   
       if(g_ucKeyCnt==0)   当值为0才进行下一次采集,避免按键延时
       {
        g_ucKeyVal=KeyScan();
            g_ucKeyCnt=20;
        }
    }

                            星空小蜗牛

  • 相关阅读:
    (转载)_信息安全入门指南
    经历--比赛绿盟_安全研究员
    Python正则表达式操作指南
    web 安全学习
    2014-9-10中午睡觉的一个梦
    渗透工具学习
    CVE 2013-3897
    STL 学习
    设置chrome 可以保存mht网页
    合并windows7系统下的两个IE8浏览器进程
  • 原文地址:https://www.cnblogs.com/asnail/p/10088031.html
Copyright © 2011-2022 走看看