打印

请教/////这里是不是有错(Key_Sample1应该是 Key_Sample2

[复制链接]
1232|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
真白菜|  楼主 | 2008-8-3 17:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void KeyScan_Service(void)
{
    Port_Key_Data = KEY_MASK;
    Key_Sample1 = Port_Key_Data&KEY_MASK;
    Key_Sample1 = Key_Sample1^KEY_MASK;   /////这里是不是有错(Key_Sample1应该是 Key_Sample2 
    if(Key_Sample1==Key_Sample2)
    {                    //连续两次扫描的键值相同,有效,则处理
        if(Key_Sample1)                //是否有键按下?如有则处理
        {
            if(Key_Down_flag==0)      //如果键值还没有被消抖确认,则确认是否与之前的键值一至
            {
                if(Key_Sample1==Key_Scan_old)
                {
                    Key_Down_Counter++;
                    if(Key_Down_Counter>=KEY_DOWN_COUNTER_S) 
                    {
                        Key_Down_Counter = 0;
                        Key_Down_Counter_l=KEY_DOWN_COUNTER_S;
                        Key_Down_flag = 1;
                        Key_Value = Key_Sample1;    //将确认的键值载入缓存器中,供键抬起后处理用
                    }
                }
                else
                {
                    Key_Down_Counter = 0;        //重新计数,即重新消抖
                    Key_flag_long=0;
                }
            }
            else                    //如已经过消抖,则判断是否有组合键按下?如无则直接退出处理
            {
                Key_Down_Counter_l++;//
                if(Key_Down_Counter_l>=KEY_DOWN_COUNTER_L) 
                {
                    Key_flag_long=1;
                    Key_Down_Counter_l=KEY_DOWN_COUNTER_L-KEY_DOWN_COUNTER_M;
                }
            }
        }
        else                        //否则就处理之前是否有键是经过确认的
        {                            //如果已经有键按下,并确认消抖后则处理键值
            if(Key_Down_flag==1)
            {
                Key_Down_flag = 0;//
                Key_Data = Key_Value;
                Key_flag = 1;
                Key_Down_Counter = 0;
                Key_flag_long=0;
            }
            if(Key_Release_flag==1)
            {
                Key_Release_flag=0;
                Key_flag = 0;
            }
        }
        Key_Scan_old = Key_Sample1;            //保存这次的有效键值
    }
    Key_Sample2 = Key_Sample1;                //保存当次的值 
}

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

81

帖子

0

粉丝