单片机串口通讯在12MHz下的问题

在12MHz晶振下,单片机串口通讯时,当波特率调至4800时,误差率高达7%,导致传输数据变为乱码。而在11.0592MHz下,由于没有误差,问题不复存在。总结建议,12MHz单片机应限制使用2400及以下波特率,避免波特率过高引发的通信错误。
摘要由CSDN通过智能技术生成

单片机串口通讯在12MHz的问题


首先想说单片机的12M远不如11.0592M,其问题之大折磨了我一下午
我使用的的晶振是12Mhz,虽然我知道12Mhz在计算波特率时会有误差,但我没想到这个误差会有上限(其实应该想到的)。 超过上限,误差太大会有问题。
下面我详细说一下我遇到的问题,关于波特率的计算公式这里就省去。
我以定时器1方式二计时,PCON=0(波特率不翻倍),为前提来展示。
在2400波特率下,一起都是那么美好:

   TMOD=0x20;
   TH1=0xF3;
   TL1=0xF3;
   SCON=0X50;
   PCON=0X00;
   TR1=1;
   ES=1;
   EA=1;

在这里插入图片描述
通过软件计算此时误差为0.16%,这是的我还没有意识到问题的严重在这里插入图片描述
然而当我把波特率调到4800时一切都变了:

   TMOD=0x20;
   TH1=0xF9;
   TL1=0xF9;
   SCON=0X50;
   PCON=0X00;
   TR1=1;
   ES=1;
   EA=1;

此时的误差率达到了7%!!!在这样的误差下所传输的都变成了乱码!!!
在这里插入图片描述
在这里插入图片描述
而这种问题在11.0592MHz下根本不会出现ÿ

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值