51 单片机 2个定时器 同时工作
#include<reg52.h>sbitLED1=P1^0;sbitLED2=P1^1;inta=0,b=0;voidinit()//一些变量和中断T0T1的初始化{T...
#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个都不工作。。。。。 展开
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个都不工作。。。。。 展开
3个回答
展开全部
试一试设置一下中断优先级,即IP寄存器。
可能是因为两个定时器同时中断,无法识别是谁中断吧导致的无法工作。
可能是因为两个定时器同时中断,无法识别是谁中断吧导致的无法工作。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
错误void mian()
{ void init ();
应为
void main()
{init ();
main写成mian没有主程序,单片机不工作
调用子程序不能带void
{ void init ();
应为
void main()
{init ();
main写成mian没有主程序,单片机不工作
调用子程序不能带void
追问
还是不行。。
追答
程序看不出什么新问题,是不是硬件还有问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询