在51单片机中,使用同时使用两个定时器,执行的时候会有先后顺序吗?

#include<reg52.h>//52单片机头文件#include<intrins.h>//包含有左右循环移位子函数的库#defineuintunsignedint/... #include<reg52.h> //52单片机头文件
#include <intrins.h> //包含有左右循环移位子函数的库
#define uint unsigned int //宏定义
#define uchar unsigned char //宏定义
sbit beep=P2^3;
uchar tt;
uint fre,flag;

void main() //主函数
{
fre=50000;
beep=0;
TMOD=0x11;//设置定时器0,定时器1为工作方式1
TH0=(65536-fre)/256;
TL0=(65536-fre)%256;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
EA=1;//开总中断
ET0=1;//开定时器0中断
ET1=1;
TR1=1;
TR0=1;//启动定时器0
while(1);//等待中断产生

}

void timer0() interrupt 1 //定时器0中断
{
TR0=0; //进中断后先把定时器0中断关闭,防止内部程序过多而造成中断丢失
TH0=(65536-fre)/256;
TL0=(65536-fre)%256;
tt++;
if(flag<40) //以下几个if分别用来选取不同的频率
if(tt==10)
{
tt=0;
fre=50000;
beep=~beep;
}
if(flag>=40&&flag<80)
{
tt=0;
fre=50000;
beep=~beep;
}
if(flag>=80&&flag<120)
{
tt=0;
fre=10000;
beep=~beep;
}
if(flag>=120&&flag<160)
{
tt=0;
fre=5000;
beep=~beep;
}
if(flag>=160&&flag<200)
{
tt=0;
fre=2500;
beep=~beep;
}
if(flag>=200&&flag<240)
{
tt=0;
fre=1250;
beep=~beep;
}
if(flag>=240&&flag<280)
{
tt=0;
fre=625;
beep=~beep;
}
if(flag>=280&&flag<320)
{
tt=0;
fre=312;
beep=~beep;
}
if(flag>=320&&flag<360)
{
tt=0;
fre=156;
beep=~beep;
}
TR0=1;
}
void timer1() interrupt 3 //定时器1中断用来产生2秒时间定时
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
flag++;
if(flag==360)
{
flag=0;
fre=50000;
}
}
程序如上所述,望能解释一下!!
展开
 我来答
波嗣董赫然
2019-04-18 · TA获得超过3839个赞
知道大有可为答主
回答量:3171
采纳率:33%
帮助的人:206万
展开全部
你用了两个中断,却只有一个reti,你不觉得奇怪吗?而且t0中断也没有停掉,这样t0在执行,虽然t1也处在可用状态,但是当你还没来得急去执行t1时,t0又发出了中断请求,此时根据t0的优先级大于t1,所以就没有你说的那个22秒后的脉冲了。
可以将程序改为仅用一个定时器中断,此时只需判断时间是否到8秒或22秒就行了。
生活如歌_
2012-01-14 · TA获得超过1.5万个赞
知道大有可为答主
回答量:7398
采纳率:78%
帮助的人:2180万
展开全部
如果同时中断的话,一定是T0先响应。
追问
你好 我是初学者,我希望能知道两个定时器TR1 TR0是同时启动还是有先后顺序,以及是一个启动停止后另一个启动,还是同时进行的!!先谢谢
追答
启动顺序按你的指令前后顺序,启动后各自运行,互不干扰,中断请求也是各自的,CPU响应顺序按谁先申请就先响应谁,但高优先级可以中断低优先级中断。同时申请的话先响应高优先级,同一级别则T0在前。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
骑唱01g
2012-01-14 · TA获得超过467个赞
知道小有建树答主
回答量:274
采纳率:0%
帮助的人:164万
展开全部
请设置优先级,以避免冲突,也让程序完全按照你的想法运行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式