串行口的波特率是每秒钟发送或接收的数据位数,单位为bit/s。影响波特率的三个因素为:①晶振频率fosc;②电源控制寄存器PCON中的波特率倍增位SMOD;③定时器/计数器T1的溢出率设置。在3.3.3节已提及:方式0和方式2波特率固定,方式1和方式3波特率可变。
1.定时器/计数器T1溢出率的计算
相关因素有:①T1溢出率=定时溢出次数/s;②定时器/计数器工作方式的选择。T1实际上只有模式0、1、2三种可选,因此选模式2(8位自动重装)来实现,其溢出率计算如下:
设X为预置值。
溢出一次的时间为:(28-X)×12/fosc
溢出率(T1)=fosc/12/(28-X)次/s
例:设晶振频率fosc=6MHz,预置值X=F3H,则有:
溢出率(T1)=6×106/(28-F3H)/12≈38461.5次/s
2.波特率的设置
方式1和方式3的波特率可以人为设定。
波特率=(2SMOD/32)×(定时器T1的溢出率)(https://www.xing528.com)
=(2SMOD/32)×fosc/12/(28-X)
通常在实际应用中给出了波特率,求定时器预置值X:
X=256-2SMOD×fosc/(波特率×32×12)
例:fosc=6MHz,SMOD=1,波特率2400bit/s,求定时器预置值X。
X=256-21×6×106/(2400×32×12)
=242.98≈243→F3H
由定时器1模式2产生的常用波特率参数见表3-4。
表3-4 定时器1模式2产生的常用波特率参数

实际应用时多采用11.0592MHz的晶振频率,因其波特率误差为零;晶振频率为12MHz时,所选波特率最高不要超过4800bit/s,否则误差明显大于0.16%。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
