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,就行了。
试一试设置一下中断优先级,即IP寄存器。
可能是因为两个定时器同时中断雹乎,无法识别是谁中断吧导源差悉致的无法庆隐工作。
错误void mian()
{ void init ();
应为
void main()
{init ();
main写成mian没有主程序慧高运,单片机不工作念差
调用子程序不能前梁带void