8051的串口波特率的计算(笔记版)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8051的串口波特率的计算
1、方式0的波特率,固定为晶振频率的十二分之一。
2、方式2的波特率,取决于PCON寄存器的SMOD位。PCON是一个特殊的寄
存器,吹了最高位SMOD位,其他位都是虚设的。计算方法如下:
SMOD=0,波特率为晶振的1/64;
SMOD=1,波特率为晶振的1/32.
3、方式1与方式3的波特率都是由定时器的溢出率决定的。
公式为:
BR=(2SOMD/32)*(定时器TI的溢出率)
通常情况下,我们使用定时器的方式2,即比率发生器,自动重载计数常数。
溢出的周期为:
T=(256-X)*12/fosc
溢出率为溢出周期的倒数,即
T1=1/T
所以:
式中:SMOD是所选的方式,fosc是晶振频率。X是初始值。
51单片机模拟串口波特率计算方法
1.计算波特率位间隔时间(即定时时间,其实就是波特率的倒数)
位间隔时间(us)=10(6)(us)/波特率(bps)
2.计算机单片机指令周期:
指令周期(us)=12/晶振频率(Mhz)
补充问题:做串口通信时,为什么要把晶振频率设为11.0592,为什么要把波特率设为9600?
先说波特率。波特率从300到115200都可以,甚至更高或更低。一般规范的波特率都是3的倍数,比如9600、19200、38400;但是并不是一定的,波特率也可以是10000或者10001、10002,只要你的设备能产生符合这个要求的频率,尤其是自己用时,波特率都是很随意的,没有限制。只是多数时候为了和电脑配合,波特率才规范为固定的几个值,且为了传输稳定,用9600。
用11.0592晶振的原因是51单片机的定时器导致的。通常用11.0592M晶振是为了得到标准的无误差的波特率。举例说来,如我们要得到的9600的波特率,晶振为11.0592M和12M,定制器1为2SMOD设为1,分别看看那所求的TH1为何值。代入公式:
11.0592M
9600=(2/32)*((11.0592M/12)(256-TH1))
TH 1=250
12M
9600=(2/32)*((12M/12)(256-TH1))
TH1=249.49