[51单片机] 51单片机串口问题

[复制链接]
1459|6
 楼主| ldcung 发表于 2014-4-11 22:43 | 显示全部楼层 |阅读模式

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

本意是发送1,不知为何串口调试助手里接收到的都是0x81,这是为何呢?请高手指点
天风立马 发表于 2014-4-11 22:55 | 显示全部楼层
检查一下波特率。
ayb_ice 发表于 2014-4-12 06:54 来自手机 | 显示全部楼层
可能波特率不对,也可能配置不对
张志辉 发表于 2014-4-12 07:15 | 显示全部楼层
我也认为是波特率的问题!好好看一下!
牛牛牛 发表于 2014-4-12 08:26 | 显示全部楼层
出现这种情况,波特率设置出错的问题大一些
coody 发表于 2014-4-12 10:56 | 显示全部楼层
严查波特率
 楼主| ldcung 发表于 2014-4-12 11:33 | 显示全部楼层

问题已解决,谢谢各位的回答。确实是波特率设置的问题,我用的是12M的晶振,按照别人的程序把波特率设置成了9600,结果总是出现问题,后来发现如果是12M的频率频率最好不要超过4800,要不然会导致实际波特率值和理论波特率值相差很大,导致数据在传输过程中出现问题。51单片机波特率T1初始值及相应误差如下表

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

7

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部