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

我用助手写数据到单片机,再读出来,但是不晓得为什么,一直显示错误,十位的数字总是错
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;
}

当使用串口调试助手发送和接收数据不一致的时候,可能是以下一些原因造成的:

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

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

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

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

如果上述问题都未解决问题,可以考虑通过更换串口线或其他端口设备并将其重新连接到计算机端口来排除硬件故障。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-05-24
程序贴出来把追问

请你帮我看哈是咋回事,我用P1口外接了8个二极管,显示的和写入数据一致。就是助手显示有问题,11显示91,22显示A2之类的。用了2个助手都这样。

第2个回答  推荐于2016-04-02

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

追问

你好,我已经在仿真中将收发数据搞好了,但是不晓得怎么回事,我在实物中用串口调试收不到数据,这是为什么啊?

本回答被提问者和网友采纳
相似回答