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

2019-07-15 13:40发布

本帖最后由 lipengxiang1223 于 2016-6-10 22:17 编辑

#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);   
}
}
}



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
lipengxiang1223
1楼-- · 2019-07-15 15:19
接受的数据是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
lipengxiang1223
2楼-- · 2019-07-15 19:03
对了,使用的是170MHZ 的无线串口,哎,不知道怎么回事
波特率是9600,8N1数据模式。。。。。
@曲终人散@
3楼-- · 2019-07-15 19:49
 精彩回答 2  元偷偷看……
奔波001
4楼-- · 2019-07-16 00:40
这是字符串,查ACSII码就知道0对应的就是80,以此类推,你发的是字符,接受显示是二进制码得到的数字
lipengxiang1223
5楼-- · 2019-07-16 02:07
0的ASCII码是说48,好不好,搞得我自己都不相信自己了。
ascii.PNG
王粉娟
6楼-- · 2019-07-16 07:49
大一的还不懂

一周热门 更多>