51单片机 计时器0产生PWM波 计时器1用作串口通信 两个计时器互相影响。。。该怎么处理

#include<reg52.h>#defineuintunsignedint#defineucharunsignedcharuintt=0,f=39,w=2;//t为单... #include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uint t=0,f=39,w=2;//t为单位计时数 500次为0.5ms f+1 为周期 (39+1)*0.5=20ms w 为占空比 1w=0.5ms
sbit P10=P1^0; // 输出端
void init()
{
TMOD=0x21;
SM0=0;
SM1=1;
REN=1;
PCON=0;

TH0=(65536-500)/256;
TL0=(65536-500)%256;
ET0=1;
TR0=1;
EA=1;
ES=1;
ET1=1;

TH1=0xFD;
TL1=0xF9;
TR1=1;//计时器互相影响 一个用于传输数据 一个用于产生pwm波

}

void time0() interrupt 1
{
TH0=(65536-500)/256;
TL0=(65536-500)%256;
t++; //t为0.5ms
if(t>=f)
t=0;

}

// void getspeed0() //interrupt 4 using 1
//{
//P0=SBUF;while(!RI);RI=0; //接收数据
//SBUF=P0;while(!TI);TI=0; //发送数据

//}

void main()
{
init();

while(1)
{
if(t<w)P10=1; //单个周期
else P10=0;
}
}
展开
 我来答
似水流年迟5962
2011-07-23 · TA获得超过5.6万个赞
知道大有可为答主
回答量:4万
采纳率:0%
帮助的人:5689万
展开全部
串口和定时器的中断是有优先级的,这两个中断首先不可能同时响应,默认必须是先执行完定时器的中断服务程序后才会去执行串口的中断服务程序,当然当串口中断服务程序执行到一半的时候出现了定时器中断,就会对串口有一定的影响,想避免最好就是在执行串口中断服务程序之前关定时器0中断,等串口中断服务程序执行完毕在开定时器0中断。
bbzhou830
2011-07-17 · 超过12用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:29.1万
展开全部
这个实际上是不会影响的,因为默认的是定时器0的中断优先级比较高,如果对串口有影响的话,请你试试用定时器1产生PWM,而定时器0产生串口的波特率····
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
已经大三了
2011-07-21
知道答主
回答量:3
采纳率:0%
帮助的人:0
展开全部
二楼对
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a1021440288
2011-07-16
知道答主
回答量:41
采纳率:0%
帮助的人:33.7万
展开全部
..混任务的0.0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式