为什么用串口调试助手,发送和接收的数据不一样?

我用助手写数据到单片机,再读出来,但是不晓得为什么,一直显示错误,十位的数字总是错ucharr,s;voidint_serial()//初始化串口{TMOD=0x20;/... 我用助手写数据到单片机,再读出来,但是不晓得为什么,一直显示错误,十位的数字总是错
uchar r,s;
void int_serial() //初始化串口
{
TMOD=0x20; //定时器T1 工作于方式2
SCON=0x50; //SCON=0101 0000B,串口工作方式1,允许接收(REN=1)
PCON=0x00; //PCON=0000 0000B,波特率9600
TH1=0xfd; //根据规定给定时器T1 赋初值
TL1=0xfd; //根据规定给定时器T1 赋初值
EA=1;
ES=1;
TR1=1; //启动定时器T1
}
void send()
{
if (r==1) //检测输出是否READY
{
ES=0;
r=0;
SBUF=s; //发送数据
while(!TI);
TI=0;
ES=1;
}
}
void main()
{
int_serial();
while(1)
{
send();
}
void get() interrupt 4
{
RI=0;
//P1=SBUF;
s=SBUF;
r=1;
}
展开
 我来答
tudouyiyuansan
2023-03-26 · TA获得超过114个赞
知道小有建树答主
回答量:1236
采纳率:90%
帮助的人:28.7万
展开全部
当使用串口调试助手发送和接收数据不一致的时候,可能是以下一些原因造成的:

1. 波特率设置不正确:串口调试助手和接收设备需要设置相同的波特率。如果波特率设置错误,发送和接收的数据将不一致。请确保用正确的波特率设置发送和接收数据。

2. 数据格式不正确:如果发送和接收设备的数据格式不一致,发送的数据可能会在接收端不正确的解读。请确保发送和接收设备的数据格式一致,包括数据位、停止位、奇偶校验、数据流控等。

3. 软件设置:有些串口调试助手软件会将发送的数据加上换行符或回车换行符。如果接收设备无法正确地处理这些控制字符,则发送和接收的数据将不一致。

4. 信号干扰:由于串口通讯是通过数码信号线传输的,因此干扰信号可能导致串口数据丢失,从而影响发送和接收的数据一致性。请检查设备是否处于噪声环境中。若存在噪声环境,需要采取减少干扰的方法,如屏蔽、隔离、滤波等。

如果上述问题都未解决问题,可以考虑通过更换串口线或其他端口设备并将其重新连接到计算机端口来排除硬件故障。
查晓筠0i5
2015-05-24 · TA获得超过2752个赞
知道大有可为答主
回答量:2.1万
采纳率:1%
帮助的人:4964万
展开全部
程序贴出来把
追问
请你帮我看哈是咋回事,我用P1口外接了8个二极管,显示的和写入数据一致。就是助手显示有问题,11显示91,22显示A2之类的。用了2个助手都这样。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
推荐于2016-04-02
展开全部

检查串口线,或者更换一个串口软件试试看,流行的如格西烽火、SSCOM等,都不错。

追问
你好,我已经在仿真中将收发数据搞好了,但是不晓得怎么回事,我在实物中用串口调试收不到数据,这是为什么啊?
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式