关于中断的问题,求大神解答,我是菜鸟

2019-07-21 02:13发布


#include <reg51.h>
sbit LED=P3^7;
sbit LED1=P3^6;
unsigned char second;
unsigned char tcount ,t,a;
void delay(unsigned int c);
void time_int();
void main()
{
   int d;
   time_int();
   a=1;
   
   delay(100);


   for(d=0;d<3;d++)
   {
     LED1=0;
     LED=0;
     delay(100);
     LED1=1;
     LED=1;
     delay(100);
   }

  while(1);
}
void t0() interrupt 1 using 0
{


  int i;
  TH0=0Xd8;                //重装50ms初值,TH0=(65536-50000)/256
  TL0=0Xf0;                //              TL0=(65536-50000)/256
  if(a==1)
  {
  
   while(1)
  {
   for(i=0;i<3;i++)
   {
   LED=0;
   delay(1000);  
   LED=1;
   delay(1000);
   }
  a=0; break;
  }


   if(a==0)
{ while(1) //本段程序功能为显示
  {
  
         LED1=0;
         delay(1000);
     LED1=1;
         delay(1000);
         break;


}
}
        
}


}


void time_int()
{


        TMOD=0x01;        //定时器0工作在工作方式1下
        TH0=0Xd8;        //设置50ms定时时计数器的初值,TH0=(65536-50000)/256
        TL0=0Xf0;        //                            TL0=(65536-50000)/256
        EA=1;                //CPU开总中断
        ET0=1;                //T0开中断
        TR0=1;                //启动T0
          tcount=0;
          second=0;
        t=0;




}
void delay(unsigned int c)
{
unsigned int x,y;
for(x=c;x>0;x--)
   for(y=110;y>0;y--);
}










这是一个中断的实验
当检测到a==1的时候,进入中断,当执行完中断的函数后,为何不能
执行主函数的

for(d=0;d<3;d++)
   {
     LED1=0;
     LED=0;
     delay(100);
     LED1=1;
     LED=1;
     delay(100);
   }




我是菜鸟,求大神解答下,谢谢!!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
月下良缘
1楼-- · 2019-07-21 08:01
帮忙顶一顶
HXYDJ
2楼-- · 2019-07-21 09:10
中断程序里面用了死循环,所以进一次中断后就不能退出了。
往事随风就好
3楼-- · 2019-07-21 12:31
HXYDJ 发表于 2019-4-29 16:32
中断程序里面用了死循环,所以进一次中断后就不能退出了。

已经加了break 了啊

一周热门 更多>