173 2438 5004
KEROS加密芯片——品牌直销 | 免费样品 | 技术支持
当前位置:网站首页 > 资讯中心 正文 资讯中心

51单片机串口只发送不接收

htxw 2023-03-14 资讯中心 20 ℃

C51单片机串口收不到数据,能发送,接不到?为什么?

TMOD没有设置,定时器1的工作方式没有确定,是按照方式0运行的,不是方式2的自动重装模式,波特率对不上,数据不会正确。

另外,REN(SCON.4)应该为1,否则不允许接收,自然收不到数了。

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

你这是仿真还是实物开发板?这串口通信是单片机与电脑吗?电脑上只能用串口调试助手,才能发送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;

}

}

}

}

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

关于51单片机发送和接收串口AT指令的问题,能发送AT但是接受不了是什么原因

你定义的接收数组Rec_Buf[100]; 这已经超过了内存容量,编译是不能通过的。为了能编译,估计存储模式你是选的外部数据存储器了吧。这要求必须外部扩展数据存储器,可实际上却没有,那接收数据就等于存放在空虚的存储器了,当然就不会保存下来了,就等于没有接收到数据。其实也没必要定义那么大的数组。10~20个单元就够了。如果,单片机是52的,就可以用高128字节的内部RAM存储空间了,但需要定义成间址存储区idata。

unsigned char idata Rec_Buf[100];

51单片机串口只发送不接收的介绍就聊到这里吧,感谢您花时间阅读,谢谢。

本文标签:51单片机串口只发送不接收

<