xiatianzhang 发表于 2012-5-12 19:44:31

lcofjp 发表于 2012-5-12 19:51:55

你用的是沿触发还是电平触发?这个很关键。定时器怎么防抖?

xiatianzhang 发表于 2012-5-12 20:00:08

512826028 发表于 2012-5-12 21:38:11

这么做应该就可以了,你参考一下吧。
进入中断之后,开始:
if(P1IFG?) //这个值和你的按键有关系,就是判断按键是否有一个按下。比如如果按键式P10--P13,可是是if(P1IFG & 0x0f).
{
delayms(50);//延时一下,消抖
switch(P1IFG){
         case:Select_i//假设你的按键是P10的话,下降沿,说明本身按键的值都是高电平。注意其他按键的电平。
                  {
                     while((P1IN & 0x01) == 0) ;//等待按键松开
                     keynum = Select;
                     break;
                  }
         ,,,,,,,,//你的处理函数
          default:break;
}
P1IFG = 0;//清除中断标志
}

512826028 发表于 2012-5-12 21:39:31

哦 那个清除中断标志的语句应该在if函数之外,结束中断函数的时候。

xiatianzhang 发表于 2012-5-14 10:58:26

512826028 发表于 2012-5-14 20:02:02

xiatianzhang 发表于 2012-5-14 10:58 static/image/common/back.gif
你这方法我不能用,你这按键按住不放的话 ,程序就死在哪里了。。。

那就设个标志。

何逸 发表于 2012-5-15 00:41:26

用松手检测程序可以防止抖动

xiatianzhang 发表于 2012-5-15 19:21:55

34071417 发表于 2012-5-22 23:05:02

使用上升沿触发,外加一1uF的电容。端口上拉一电阻,下拉一电容,开关一端接地,直接硬件防抖
页: [1]
查看完整版本: msp430 的P1口中断问题?