51 单片机 2个定时器 同时工作

#include<reg52.h>
sbit LED1=P1^0;
sbit LED2=P1^1;
int a=0,b=0;
void init () //一些变量和中断T0T1的初始化
{
TMOD=0x11; //以下都是定时器T0T1的初始化
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=(65535-50000)/256;
TL1=(65535-50000)%256;
EA=1;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
}
void time0() interrupt 1 //定时器中断T0 1S钟流水灯流一下
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++; //中断产生20次,一次50MS,所以20次就是1S
if (a==20) //如果20次到了
{
a=0; //从新开始20次
LED1=~LED1;
}
}

void time1() interrupt 3 //定时器中断T1
{
TH1=(65535-50000)/256;
TL1=(65535-50000)%256;
b++;
if (b==20)
{
b=0;
LED2=~LED2;
}
}
void mian()
{ void init ();
LED1=1;
LED2=1;
while(1);//等待中断

}
结果2个都不工作。。。。。

你的两个定时器的时间都设成一样的了,当两个定时器到了点后,单片机到底该进行处理那一个啊,所以要么你修改时间,要么你把IP优先寄存器设施下PT0或者PT1等于1,就行了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-06-06
试一试设置一下中断优先级,即IP寄存器。
可能是因为两个定时器同时中断,无法识别是谁中断吧导致的无法工作。
第2个回答  2013-06-06
错误void mian()
{ void init ();
应为
void main()
{init ();
main写成mian没有主程序,单片机不工作
调用子程序不能带void追问

还是不行。。

追答

程序看不出什么新问题,是不是硬件还有问题