51单片机串口发送问题

2019-07-15 20:14发布

在程序while循环中不断通过串口往上位机发送数据
        while(1)
        {
                SBUF=1;
                while(ti==0);
                TI=0;
         Delay_ms(500);
        }

本意是发送1,不知为何串口调试助手里接收到的都是0x81,这是为何呢?请高手指点
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
ldcung
2019-07-16 02:59
问题已解决,谢谢各位的回答。确实是波特率设置的问题,我用的是12M的晶振,按照别人的程序把波特率设置成了9600,结果总是出现问题,后来发现如果是12M的频率频率最好不要超过4800,要不然会导致实际波特率值和理论波特率值相差很大,导致数据在传输过程中出现问题。51单片机波特率T1初始值及相应误差如下表

QQ截图20140412112735.png
由此可见如果用11.0592M的晶振那是没有误差的,用12M的晶振就会使波特率理论值和实际值存在误差,我按照表中所示,把波特率设置成4800,数据传输正常。

一周热门 更多>