求助:12M晶体得到9600波特率

[复制链接]
 楼主| 自民 发表于 2008-8-7 16:59 | 显示全部楼层 |阅读模式
各位有什么好办法能做到12M晶体在9600波特率下正常运行吗?谢谢!(因为其他器件需要12M晶体,所以不能使用11.0592晶体)
 楼主| 自民 发表于 2008-8-7 17:11 | 显示全部楼层

用89C58 定时器T2做

用89C58  定时器T2
lyjian 发表于 2008-8-7 18:56 | 显示全部楼层

不同内核的单片机波特率产生的方法都不一样

你应该说清楚你用的单片机。
是标准51的话,12M晶体做9600波特率的误差是是0.16%,正常运行没任何问题。
 楼主| 自民 发表于 2008-8-8 10:55 | 显示全部楼层

是STC89C58RD+

如果用T2做,我算过-2.34375%误差

装载常数FFD8
lyjian 发表于 2008-8-8 11:14 | 显示全部楼层

装载常数用FFD9

误差是0.16%
mohanwei 发表于 2008-8-8 12:56 | 显示全部楼层

用12M没有问题的,那点误差可以接受。

datouyuan 发表于 2008-8-8 16:48 | 显示全部楼层

假如你是用89c51的话,12M晶体不行。

假如实际波特率和你想要的波特率偏差小于4.5%的话,就可用。

1机器周期12clock,12M晶体:

smod=0时,最接近9600波特率的TH1重装值是253,实际波特率为10417,偏差有8.5%。
smod=1时,最接近9600波特率的TH1重装值是249,实际波特率为8929,偏差有7%。


不过假如有1机器周期6clock的话,12M晶体可用。
smod=1;TH1重装值是243,实际波特率为8929,偏差有0.2%。
datouyuan 发表于 2008-8-8 16:51 | 显示全部楼层

打错了字,现更正。

不过假如有1机器周期6clock的话,12M晶体可用。
smod=1;TH1重装值是243,实际波特率为9615,偏差有0.2%
您需要登录后才可以回帖 登录 | 注册

本版积分规则

47

主题

195

帖子

2

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

47

主题

195

帖子

2

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