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个都不工作。。。。。
展开
 我来答
巴塔490
2013-06-08
知道答主
回答量:3
采纳率:0%
帮助的人:2.8万
展开全部
你的两个定时器的时间都设成一样的了,当两个定时器到了点后,单片机到底该进行处理那一个啊,所以要么你修改时间,要么你把IP优先寄存器设施下PT0或者PT1等于1,就行了。
微风0000782
2013-06-06 · 超过31用户采纳过TA的回答
知道答主
回答量:108
采纳率:100%
帮助的人:83.8万
展开全部
试一试设置一下中断优先级,即IP寄存器。
可能是因为两个定时器同时中断,无法识别是谁中断吧导致的无法工作。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
13...8@163.com
2013-06-06 · TA获得超过307个赞
知道小有建树答主
回答量:258
采纳率:0%
帮助的人:381万
展开全部
错误void mian()
{ void init ();
应为
void main()
{init ();
main写成mian没有主程序,单片机不工作
调用子程序不能带void
追问
还是不行。。
追答
程序看不出什么新问题,是不是硬件还有问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式