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;
        }
    }

                            星空小蜗牛

  • 相关阅读:
    UML_状态图
    UML_时序图
    UML_类图
    浅谈依赖注入
    MyEclipse_搭建SSH框架
    AOP:面向切面编程
    工厂模式
    (转)oracle使用expdp、impdp和exp、imp导入导出表及表结构
    oracle exp 和 imp 数据和表结构互相独立导出导入
    oracle 清空当前用户所有对象
  • 原文地址:https://www.cnblogs.com/asnail/p/10088031.html
Copyright © 2011-2022 走看看