当前位置:文档之家› 8051的串口波特率的计算(笔记版)

8051的串口波特率的计算(笔记版)

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

相关主题