51单片机通过串口只能发送数据不能接受数据,仿真都是好的

#include<reg51.h>intflag=0;//初始化串行口voidcsh(){SM0=0;SM1=1;REN=1;TI=0;RI=0;PCON=0;TH1=0... #include <reg51.h>

int flag = 0;
//初始化串行口
void csh()
{
SM0=0;
SM1=1;
REN=1;
TI=0;
RI=0;
PCON=0;
TH1=0xF3;
TL1=0XF3;
TMOD=0X20;
EA=1;
ET1=0;
TR1=1;
}

void main()
{
int i,j;
csh();
while(1)
{
if(RI==1)
RI=0;
if(SBUF == 0x01)
{
ES=0;
SBUF=12;
while(!TI);
TI=0;
SBUF=13;
while(!TI);
TI=0;
ES=1;
for(j=0;j<25;j++)
for(i=0;i<5000;i++) ;

flag=0;
}
}
}
展开
 我来答
lycdl
高粉答主

2019-06-11 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2万
采纳率:94%
帮助的人:4923万
展开全部

你这是仿真还是实物开发板?这串口通信是单片机与电脑吗?电脑上只能用串口调试助手,才能发送0x01,那接收的数据为什么用0x01?换个字母或数字的ASCII码,电脑上或仿真才方便发送。

程序简化一下,如下

#include <reg51.h>

void main()

{

SCON=0x50;

TH1=0xFD;//晶振11.0592M,波特率9600

TL1=0xFD;

TMOD=0x20;

TR1=1;

while(1)

{

if(RI==1)

{

RI=0;

if(SBUF=='A')//接收字母A

{

SBUF='B';//发送字母B

while(!TI);

TI=0;

SBUF=13;//回车

while(!TI);

TI=0;

}

}

}

}

仿真结果如下,可以接收和发送,都正常。请及时采纳。

九顶冒阳山
2019-06-11 · TA获得超过240个赞
知道小有建树答主
回答量:418
采纳率:100%
帮助的人:68.8万
展开全部
仿真与正常运行的不同之处,主要是时钟或者时序的相关问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我的信是Bq
2019-06-11 · TA获得超过101个赞
知道答主
回答量:621
采纳率:27%
帮助的人:109万
展开全部
目录1 情节梗概
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式