打印

关于中断的问题(我是菜鸟)

[复制链接]
354|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
大碴子味|  楼主 | 2020-4-22 07:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yueguang3048 于 2020-4-22 09:51 编辑
#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);
   }
代码,请使用“添加代码文字”!

我是菜鸟,求大神解答下,谢谢!!!

使用特权

评论回复

相关帖子

沙发
yueguang3048| | 2020-4-22 09:55 | 只看该作者
因为程序是顺序执行的,所以你说的那些代码只能在上电开始执行一次,后面就一直卡在main函数的while(1);这里;中断触发后,处理一下中断,然后再回while(1);这里。

使用特权

评论回复
板凳
21iscolor| | 2020-4-22 20:38 | 只看该作者
程勋逻辑设计有问题,应该在while前开中断,while里等待中断

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

372

主题

372

帖子

0

粉丝