外部中断内部有定时器中断怎么没有执行,请帮忙看看

2019-07-15 21:09发布

本帖最后由 neuangel 于 2014-1-1 21:07 编辑

外部中断内部有定时器中断怎么没有执行,请帮忙看看
外部中断1执行后,到定时器0中断的时候不能执行,为什么呢?  


刚开始写软件,求帮助
格式怎么考进来都乱了。。。。

#include "reg52.h"#define uint unsigned int
#define uchar unsigned char
uchar count;uint num;
sbit east_red        =        P2^0;
sbit east_green =        P2^1;
sbit sou_red        =        P2^6;
sbit sou_green        =        P2^7;
sbit d1                        =        P2^4;
sbit sp=P1^5;
void delayms(uint);

void main(){      
  TMOD=0x01;      
  TH0=(65536-50000)/256;     
   TL0=(65536-50000)%256;  
         EA=1;     
         EX1=1;      
        ET0=1;      
        TR0=1;      
      east_red=0;   
       east_green=0;   
      sou_red=0;     
      sou_green=0;      

  delayms(1000);        

        while(1)      
    {              
          east_red=0;               
          east_green=1;           
           sou_red=1;              
         sou_green=0;            
         delayms(200);
            
        east_red=1;         
         east_green=0;         
        sou_red=0;           
       sou_green=1;               
        delayms(200);      
  }
}
void delayms(uint i)                   //延时函数
{      
   uint j;     
   for(;i!=0;i--)   
    {            
        for(j=112;j!=0;j--);   
    }
}
void external1() interrupt 2                      //外部中断1
{      
     d1=0;  
      delayms(1000);     
      d1=1;      
     delayms(1000);   
    sp=0;      
     delayms(1000);      
      sp=1;            
    num=0;                  
                     //这段程序没有运行。。。。        
if(num==20)                                //外部中断执行了      
{                                                //但是定时器中断没有运行           
          num=0;              
        count=0xfe;        
       P2=count;              
           sp=0;              
          delayms(1000);            
           sp=1;           
          delayms(1000);   
    }            
  }
void time0() interrupt 1                                //定时器0——50ms中断
{     
   TH0=(65536-50000)/256;   
     TL0=(65536-50000)%256;      
  num++;     
  }








友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
neuangel
1楼-- · 2019-07-15 23:33
之前一直做硬件,现在想转软件,遇到好多问题呀,求帮助
dongyumin
2楼-- · 2019-07-16 05:09
 精彩回答 2  元偷偷看……
neuangel
3楼-- · 2019-07-16 07:46
dongyumin 发表于 2014-1-1 21:39
num=0;                  
                     //这段程序没有运行。。。。        
if(num==20)      ...

谢了,确实是这样的

一周热门 更多>