按键的下降沿和低电平的问题

2019-03-24 09:40发布

请教各位,按键原来是下降沿有效,但我想把按键改为低电平有效,应该怎么改呢,是把原来的下降沿中断去掉吗?
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
16条回答
曾经in
2019-03-25 12:44
本帖最后由 曾经in 于 2015-11-16 00:02 编辑

看一下数据手册有没跳变沿中断(就是上升沿下降沿都产生中断)有的话按下面处理处理,
没有的话要么手动切换触发的边沿要么用while去卡(就是松手检测), 自己看看
void P1_IODect()
{        static unsigned int old_Push_Key=0;
        unsigned int Push_Key=0;
        //-----排除输出IO的干扰后,锁定唯一被触发的中断标志位-----
        Push_Key=P1IFG&(~P1DIR);
        //-----延时一段时间,避开机械抖动区域-----
        __delay_cycles(10000);                                                        //消抖延时
        //----判断按键状态是否与延时前一致-----
        if((P1IFG&(~P1DIR))==Push_Key)                                 //如果该次按键确实有效
   {
        switch(old_Push_Key^Push_Key)       //按键有变化
        {
         //----判断具体哪个IO有变化,调用该IO的事件处理函数-----
         case BIT3:         P13_Onclick(Push_Key&BIT3);                break;
         default:                                                                        break;                //任何情况下均加上default
         }
         old_Push_Key=Push_Key;
   }
}

void P13_Onclick(unsigned int key)
{
       if(key==0)
       {//按键松开
       }
       else
       {//按键按下
       }
}



一周热门 更多>

相关问题

    相关文章