程序猿的独白 2015-01-29 13:06 采纳率: 0%
浏览 1598

在单片机开发中,我遇到了一个很奇怪的关于外部中断的问题

void button_int0 () interrupt 0 { //当函数正确时,需改正delay(大数目)为delay_stop(大数目);
uchar timp;
uint i=0;
/****
IE=0x80时,程序执行完了,但是没有办法退出中断,
当使用EA=0时,就可以退出中断了。很肯定的是,并没有重复进入中断。
*****/
//IE=0x80;
EX0=0;
EA=0;

light =1;

timp=P1;
exit_flag=off;

 # if test
    test_define();
 # endif

   //closs door



    while(P1!=0XFF);          //waiting the (button)interrupt 0 relax

# if test
     light=!light;                      // test why doesn't IE equal 0x80
     delay(20000);

# endif

    while((P1!=0xEF)&&(exit_flag==off)){       //按下P14口实现“取消”功能 并且在调用函数中没有按“取消”
        timer_selection(trace_kb(0,0,0));
        //trace_kb(0,0,0);  
    }

     LIGHT_off();            // test why doesn't IE equal 0x80

# if test
light=!light; // test why doesn't IE equal 0x80
delay(20000);
# endif

    delay_stop(22500);       //  等待松开按键,预防按键出错再次进入到中断中
    EX0=1;
    EA=1;
    return;

}

  • 写回答

1条回答 默认 最新

  • zwave 2015-06-18 06:23
    关注

    实际按键时会跳动,也就是中断口容易多次快速触发,中断程序中 用 delay 是不可取的。用while()也是不可取的,建议 重新设计按键程序。

    评论

报告相同问题?

悬赏问题

  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭