单片机定时器0设置为工作方式1为TMOD=0x01;定时器1设置工作方式1时TMOD=0x10;还是和定时器0一样为0x01

请高手帮忙指点一下,还有串口通信(p0控制流水灯)怎么不对呀我是初学者请师兄师姐不吝指教一下#include<reg52.h>voidmain(){while(1){SB... 请高手帮忙指点一下,还有串口通信(p0控制流水灯)怎么不对呀 我是初学者请师兄师姐不吝指教一下
#include<reg52.h>
void main()
{

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

}
}

在下不胜感激
展开
 我来答
hychyc_2008
推荐于2017-11-22 · TA获得超过9742个赞
知道大有可为答主
回答量:1099
采纳率:100%
帮助的人:693万
展开全部
答:
单片机定时器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;

}
}
efenwu
2009-12-11 · TA获得超过421个赞
知道小有建树答主
回答量:186
采纳率:0%
帮助的人:115万
展开全部
1.定时器0,1共用一个模式寄存器
低4位用于设置定时器0,高4位用于设置定时器1
所以要设置定时器1为工作方式1应该为:TMOD =0x10;
2.使用串口要先设定串行口工作方式
还有,你程序是要接收还是发送?看不懂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式