bios 发表于 2019-7-25 18:36:28

串口通讯的单片机程序,为什么电脑发送1,返回的却是82

正常应该是,电脑发送1,返回的是2

程序如下,请大家帮忙找一下原因:

#include<reg52.h>

void configuart(unsigned int baud);

void main()
{
configuart(9600);
while(1)
{
while(!RI);
RI=0;
SBUF=SBUF+1;
while(!TI);
TI=0;
}
}

void configuart(unsigned int baud)
{
SCON=0x50;
TMOD &=0x0f;
TMOD |=0x20;
TH1=256-(12000000/12/32)/baud;
TL1=TH1;
ET1=0;
TR1=1;
}

junyee 发表于 2019-7-25 20:14:43

先用示波器看看 UART 发送的数据对 不对得上.
再检查代码.


world_all 发表于 2019-7-28 11:19:49

1.   双方的波特率一样。
2.   多加一个变量 unsigned char tmp;    SBUF=SBUF+1; 改成tmp = SBUF;tmp = tmp+1;   SBUF = tmp;

bios 发表于 2019-8-1 11:11:48

谢谢回复,我仔细检查并验证一下

w6955 发表于 2019-8-1 11:27:58

原因很可能是你设定的波特率与标准波特率误差太大了,12M晶振按你设定误差是8.5%。换晶振或者换芯片(不知道芯片是什么?)如果是STC12C5A系列还有第三条路。
页: [1]
查看完整版本: 串口通讯的单片机程序,为什么电脑发送1,返回的却是82