51单片机串口发送问题
时间:10-02
整理:3721RD
点击:
在程序while循环中不断通过串口往上位机发送数据
while(1)
{
SBUF=1;
while(TI==0);
TI=0;
Delay_ms(500);
}
本意是发送1,不知为何串口调试助手里接收到的都是0x81,这是为何呢?请高手指点
由此可见如果用11.0592M的晶振那是没有误差的,用12M的晶振就会使波特率理论值和实际值存在误差,我按照表中所示,把波特率设置成4800,数据传输正常。
while(1)
{
SBUF=1;
while(TI==0);
TI=0;
Delay_ms(500);
}
本意是发送1,不知为何串口调试助手里接收到的都是0x81,这是为何呢?请高手指点
试一下 SBUF=‘1’;
这种情况几乎可以肯定是波特率不对。
问题已解决,谢谢各位的回答。确实是波特率设置的问题,我用的是12M的晶振,按照别人的程序把波特率设置成了9600,结果总是出现问题,后来发现如果是12M的频率频率最好不要超过4800,要不然会导致实际波特率值和理论波特率值相差很大,导致数据在传输过程中出现问题。51单片机波特率T1初始值及相应误差如下表
由此可见如果用11.0592M的晶振那是没有误差的,用12M的晶振就会使波特率理论值和实际值存在误差,我按照表中所示,把波特率设置成4800,数据传输正常。
