单片机可以开多个时间中断吗

2020-01-30 13:32发布

STC单片机两个定时器一起用,怎么低优先级的中断不能执行呢
有知道的朋友吗?程序如下:

#include<STC89C5xRC.H>
#define uint unsigned int
#define uchar unsigned char
sbit k1=P0^0;
sbit k2=P0^1;
void delayms(uint z)
{
   uint y;
   for(;z>0;z--)
   for(y=100;y>0;y--);
}
void to0int() interrupt 1
{
   
   k1=1;
   delayms(300);
   k1=0;
   delayms(300);
   TR0=0;

}
void to1int() interrupt 5
{
   EA=0;
   k2=1;
  delayms(300);
  k2=0;
  delayms(300);
  EA=1;
  

}
void main()
{
   TMOD=0x02;            //定时器0模式选择
   TL0=TH0=0;         //定时器0赋值
   TL2=TH2=0xff;
   TR0=1;                //定时器0开始
   TR2=1;
   ET0=1;                //定时器0溢出中断允许位
   ET2=1;
   EA=1;                 //开总中断
   while(1)
   {
     
   }
}
总是执行中断1,中断5根本没有机会得多执行,实际应用的时候,单片机开启多个定时中断,应该可以的,对吧。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
mdj-fish
1楼-- · 2020-01-30 18:45
在中断内部运行延时程序,是不行的!!!
dingdan258
2楼-- · 2020-01-30 20:22
mdj-fish 发表于 2013-5-16 16:40
在中断内部运行延时程序,是不行的!!!

恩,知道这个关系,低优先级会被不停的中断,但,我在低优先级中关掉EA,也不行啊
mdj-fish
3楼-- · 2020-01-30 22:51
和优先级没有关系!
dingdan258
4楼-- · 2020-01-31 00:56
#include<STC89C5xRC.H>
#define uint unsigned int
#define uchar unsigned char
sbit k1=P0^0;
sbit k2=P0^1;
uint m,n;
void delayms(uint z)
{
   uint y;
   for(;z>0;z--)
   for(y=100;y>0;y--);
}
void to0int() interrupt 1
{
   
   m++;
   if(m>60000)
     {
           m=0;
         }

}
void to1int() interrupt 3
{
   n++;
   if(n>60000)
     {
           n=0;
         }

}
void main()
{
   TMOD=0x22;            //定时器0模式选择
   TL0=TH0=0;         //定时器0赋值
   TL1=TH1=0xff;
   TR0=1;                //定时器0开始
   TR1=1;
   ET0=1;                //定时器0溢出中断允许位
   ET1=1;
   EA=1;                 //开总中断
   while(1)
   {
       if(m=50)
           {
             EA=0;
             k1=0;
                 delayms(500);
                 k1=1;
                 delayms(500);
                 EA=1;
           }
           if(n=60000)
           {
             EA=0;
             k2=1;
                 delayms(500);
                 k2=0;
                 delayms(500);
                 EA=1;
           }
   }
不在中断程序中延时,这样子可以
dingdan258
5楼-- · 2020-01-31 05:14
 精彩回答 2  元偷偷看……
dingdan258
6楼-- · 2020-01-31 08:39
各位大侠做程序时,用到多个定时器,一般怎么处理的啊。

一周热门 更多>