微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 大神们,帮我看一下,串口通信中发送的数据与接收的数据怎么不一致?

大神们,帮我看一下,串口通信中发送的数据与接收的数据怎么不一致?

时间:10-02 整理:3721RD 点击:

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar disc[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
/*****n(ms)延时子程序*****/
void delayms(uint ms) //延时ms
{
uchar i;
while(ms--)
{
for(i=0;i<120;i++);
}
}
/*****主程序*****/
void main()
{
int i;
TMOD=0x20;//定时器1工作于8位自动重载模式, 用于产生波特率
TH1=0xFD; //波特率9600
TL1=0xFD;
SCON=0x50;//设定串行口工作方式
TR1=1; //启动定时器1
while(1)
{
for(i=0;i<16;i++)
{
SBUF=disc;
while(!TI);//等特数据传送
TI=0; //清除数据传送标志
delayms(500);   
}
}
}

接受的数据是80 81 82 83  84 85 86 87 88 89 8A 8B 8C 8D 8E 8F,为什么前面是8x,不是00  01 02 03 04 05 06 07  08 09 0A  0B 0C 0D 0E 0F

对了,使用的是170MHZ 的无线串口,哎,不知道怎么回事
波特率是9600,8N1数据模式。

要么波特率的问题,要么数据处理的问题

这是字符串,查ACSII码就知道0对应的就是80,以此类推,你发的是字符,接受显示是二进制码得到的数字

0的ASCII码是说48,好不好,搞得我自己都不相信自己了。


大一的还不懂

这程序啊,仔细看看自己的程序吧

我也出现了和你一样的问题,不知道怎么解决,你解决了吗

SBUF=disc;中,disc后面是不是应该是SBUF=disc[i];

解决了么 老哥 我也是一样的问题 ...方便的话 能简单的说一下么

是你最高位置一了吧,是你选择的8N1的问题

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top