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

[复制链接]
6199|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 | 显示全部楼层
估计没读端口,还有就是手有抖动,后者通过拨动开关来模拟测试。
 楼主| 电子蔡鸟 发表于 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                       
}


我在上面程序那里打断点,,只我不放手,中断就一直进去. 直到我放手为止!
libinxtdj 发表于 2011-6-2 20:45 | 显示全部楼层
应该是抖动吧。。你程序里面没有除抖动啊
 楼主| 电子蔡鸟 发表于 2011-6-2 23:01 | 显示全部楼层
按键上加了0.1uF的电容,  可以轻微去抖动. 而且按键是比较好的韩国按键.

如果是抖动的话, 那我按住这么久了这时不应该还有抖动的. 不应该一直进入中断吧. 我按住按键后我一直点击运行.  运行了上百次还一直进入中断程序.但一放手就不进了.
Lost_WolfTotem 发表于 2015-7-20 11:03 | 显示全部楼层
(PORTB&0x08) , 好像资料上讲,RB0~2是电平变化,另外的可以电平
您需要登录后才可以回帖 登录 | 注册

本版积分规则

32

主题

136

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部