串口通讯的单片机程序,为什么电脑发送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;
} 先用示波器看看 UART 发送的数据对 不对得上.
再检查代码.
1. 双方的波特率一样。
2. 多加一个变量 unsigned char tmp; SBUF=SBUF+1; 改成tmp = SBUF;tmp = tmp+1; SBUF = tmp; 谢谢回复,我仔细检查并验证一下
原因很可能是你设定的波特率与标准波特率误差太大了,12M晶振按你设定误差是8.5%。换晶振或者换芯片(不知道芯片是什么?)如果是STC12C5A系列还有第三条路。
页:
[1]