微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求助~单片机外中断1,程序进入死循环

求助~单片机外中断1,程序进入死循环

时间:10-02 整理:3721RD 点击:
void out1() interrupt 2
{
if (!magswitch){
     delay (5);
  if (!magswitch){
      led1 = ~ led1;
   m ++ ;
   if (m == 999999)
       m = 0;
   n ++ ;
   while(!magswitch);
  }
}
}
这是自己写的程序的一部分,单片机外中断1引脚外接干簧管,低电平触发,用magswitch代表干簧管的通断,干簧管通断时,程序基本能正常运行,但是有时程序直接就停在while(!magswitch)这里,应该如何改进呢,望高人指点,小弟刚学单片机,一些地方不懂

while(!magswitch)为单条语句死循环,当你通低电平时,while为真,一直在这条语句循环。有错的地方望高手指正

對我來說
太難了~~

我是汇编高手,但是c不懂

对,我知道问题出在这里,我试着将程序改为
while(!magswitch){
    delay(200);
    magswitch = 1;
}
也就是同低电平以后,稍微延时将magswitch改为高电平,但效果还是一样,基本上陷入死循环,后来想到,虽然软件将magswitch 置为高电平,但干簧管还处于接通的状态,所以程序仍处于死循环中

if (magswitch==0)
     delay (5);
  if (magswitch==0)
{
      led1 = ~ led1;
   m ++ ;
   if (m == 999999)
       m = 0;
   n ++ ;
   while(!magswitch);
}

不好使,呵呵,不过还是谢谢你

if (magswitch==0)
     delay (5);
  if (magswitch==0)
      led1 = ~ led1;
   m ++ ;
   if (m == 999999)
       m = 0;
   n ++ ;
   while(!magswitch);
最好是把全部程序都弄出来,也有可能是硬件的问题!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top