定时器0中断和定时器1中断同时开,那么TMOD怎么设置的?

 我来答
夜来雨早来晴
推荐于2018-03-03 · TA获得超过3.1万个赞
知道大有可为答主
回答量:9110
采纳率:60%
帮助的人:827万
展开全部
单片机定时器0设置为工作方式1为TMOD=0x01;定时器1设置工作方式1时TMOD=0x10.阁下看TMOD里的各个位啥意思就知道了。

#include<reg52.h>
void main()
{

while(1)
{
SBUF=0xfe;
while(!TI);
if(RI==1)RI=0;
REN=1;
P0=SBUF;

}
}

这个程序不对。
错误有:
1.主程序没设定波特率、串口工作方式、定时器初值,也没说中断还是查询方式来工作,咋个通讯啊!
2.假设已经设定好了,接下来的也不行。
while(!TI);
后面要加TI=0;清楚发送中断标志。
3.REN要放在最外头,除非你发送时不允许接收,才在里头写。
4. if(RI==1)RI=0;
要写成:while(!RI);RI=0;
一直等到接收完毕才将RI清零。接收时要停在哪儿等着,呵呵。所以是while不能是if.
#include<reg52.h>
void main()
{

TMOD=0x20;
SCON=0x50;//串口通讯方式1
TH1=0xfd;//波特率9600
TL1=0xfd;
TR1=1;
TI=0;//发送中断标志位清零
RI=0;//接收中断标志位清零
while(1)
{
SBUF=0xfe;
while(!TI);Ti=0;
while(!RI);Ri=0 ;
P0=SBUF;

}
}
姬爱射
推荐于2016-01-09
知道答主
回答量:8
采纳率:100%
帮助的人:3.5万
展开全部
EX1=1(定时器1中断允许位)
EX0=1(定时器0中断允许位)
EA=1(中断总开关)
TMOD=0x11(都用的方式1)
但是它们有优先级区分定时器1 的优先级高于定时器0
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式