打印

问一个关于PORTB的电平变化产生中断问题

[复制链接]
5080|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
电子蔡鸟|  楼主 | 2011-5-25 21:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 电子蔡鸟 于 2011-5-25 22:32 编辑

我接了一个按键在RB口,设了内置上拉,按键另一端接地,低有效,   设置了电平变化产生中断.

不按的话,程序正常运行,中断程序不进入. 但只要按键一直按住的话,中断就一直产生(我在中断处设置一个断点,发生RBIF无法清0),中断程序一直被进入,直到放手为止. 这是怎么回事呀?

不是在电平变化才产生中断的吗?
沙发
yewuyi| | 2011-5-26 08:39 | 只看该作者
印象中,电平变化中断需要一个特殊的消除条件,那就是进入中断后,必须连续读两次端口吧。

使用特权

评论回复
板凳
XIEYUANBIN| | 2011-5-26 13:56 | 只看该作者
中断中只需要读一次端口就行了

使用特权

评论回复
地板
NE5532| | 2011-5-26 22:24 | 只看该作者
估计没读端口,还有就是手有抖动,后者通过拨动开关来模拟测试。

使用特权

评论回复
5
电子蔡鸟|  楼主 | 2011-6-2 19:32 | 只看该作者
不好意思. 前段时间没上网. 继续上面问题!
中断处理程序如下:

#define         SleepKey            (PORTB&0x08)       
if(RBIF)        //did we see a button press?
{                                       
     if(SleepKey==0)    //press
    {
       SleepKeyValue0 = 0;
      SleepKeyValue1 = 0;
   }       
   else    //按键释放
   {
       SleepKeyValue1 = 0x08; //等待按键释放
   }
   RBIF = 0;        //clear the interrupt                       
}


我在上面程序那里打断点,,只我不放手,中断就一直进去. 直到我放手为止!

使用特权

评论回复
6
libinxtdj| | 2011-6-2 20:45 | 只看该作者
应该是抖动吧。。你程序里面没有除抖动啊

使用特权

评论回复
7
电子蔡鸟|  楼主 | 2011-6-2 23:01 | 只看该作者
按键上加了0.1uF的电容,  可以轻微去抖动. 而且按键是比较好的韩国按键.

如果是抖动的话, 那我按住这么久了这时不应该还有抖动的. 不应该一直进入中断吧. 我按住按键后我一直点击运行.  运行了上百次还一直进入中断程序.但一放手就不进了.

使用特权

评论回复
8
Lost_WolfTotem| | 2015-7-20 11:03 | 只看该作者
(PORTB&0x08) , 好像资料上讲,RB0~2是电平变化,另外的可以电平

使用特权

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

本版积分规则

32

主题

136

帖子

0

粉丝