打印

定时中断问题

[复制链接]
1008|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sinadz|  楼主 | 2013-5-22 18:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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根本没有机会得多执行,实际应用的时候,单片机开启多个定时中断,应该可以的,对吧。

相关帖子

沙发
无冕之王| | 2013-5-22 18:47 | 只看该作者
这与单片机有关。

使用特权

评论回复
板凳
txcy| | 2013-5-22 19:03 | 只看该作者
你的delayms函数在两个中断中都调用,应该会有冲突
写两个延时函数在两个中断中分别调用试试

使用特权

评论回复
地板
秋天落叶| | 2013-5-22 19:19 | 只看该作者
不同的单片机的中端个数不同,低优先级中断没有被执行,应该是高优先级中端的发生频率比较高

使用特权

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

本版积分规则

304

主题

2313

帖子

0

粉丝