首页 理论教育 单片机实用教程:波特率设置

单片机实用教程:波特率设置

时间:2023-11-16 理论教育 版权反馈
【摘要】:在串行通信的四种方式中,方式0的波特率是固定的,而方式1~方式3的波特率则是可变的。再计算并设置T1的初值:X=28-2SMOD·fosc/=256-20×11.0592×106/=244十进制数244转换成十六进制数为F4H,将T1的初值设为F4H。表6-2 常见的波特率设置

单片机实用教程:波特率设置

在串行通信中,为了保证数据的发送和接收成功,要求发送方发送数据的速率与接收方接收数据的速率相同,而将双方的波特率设置相同就可以达到这个要求。

在串行通信的四种方式中,方式0的波特率是固定的,而方式1~方式3的波特率则是可变的。波特率是数据传送的速率,它用每秒传送的二进制数的位数来表示,单位符号是Baud。

1.方式0的波特率

方式0的波特率固定为时钟振荡频率的1/12,即方式0的波特率=978-7-111-43252-4-Chapter06-21.jpg

2.方式2的波特率

方式2的波特率由寄存器PCON中的SMOD位决定。当SMOD=0时,方式2的波特率为时钟振荡频率的1/64;当SMOD=1时,方式2的波特率加倍,为时钟振荡频率的1/32,即

方式2的波特率=2SMOD/64·fosc

3.方式1和方式3的波特率

方式1和方式3的波特率除了与SMOD位有关,还与定时/计数器T1的溢出率有关。方式1和方式3的波特率可用下式计算:

方式1、3的波特率=2SMOD/32·T1的溢出率

T1的溢出率是指定时/计数器T1在单位时间内计数产生的溢出次数,也即溢出脉冲的频率。

在将定时/计数器T0设为工作方式3时(设置方法见第5章内容),T1可以工作在方式0、方式1或方式2三种方式下。当T1工作于方式0时,它对脉冲信号(由时钟信号fosc经12分频得到)进行计数,计到213时会产生一个溢出脉冲到串行通信口作为移位脉冲;当T1工作于方式1和2时,则分别要计到216和28-X(X为T1的初值,可以设定)才产生溢出脉冲。

如果欲提高串行通信口的波特率,可让T1工作在方式2,因为该方式计数时间短,溢出脉冲频率高,并且能通过设置T1的初值来调节计数时间,从而改变T1产生的溢出脉冲的频率(又称T1的溢出率)。当T1工作在方式2时,T1两次溢出的时间间隔,也即T1的溢出周期为

T1的溢出周期=12/fosc·(28-X)

T1的溢出率为溢出周期的倒数,即(www.xing528.com)

T1的溢出率=fosc/[12·(28-X)]

故当T1工作在方式2时,串行通信口工作方式1、3的波特率为

方式1、3的波特率978-7-111-43252-4-Chapter06-22.jpg

由上式可推导出T1在方式2时,其初值X为

X=28-2SMOD·fosc/(384·波特率)

例如,单片机的时钟频率fosc=11.0592MHz,现要让串行通信的波特率为2400Baud,可将串行通信口的工作方式设为1、T1的方式设为2,并求出T1应设的初值。

求T1初值的过程如下。

先进行寄存器设置:为了让波特率不倍增,将寄存器PCON中的数据设为00H,这样SMOD位就为“0”;设置寄存器TMOD中的数据为20H,这样T1就工作在方式2。再计算并设置T1的初值:

X=28-2SMOD·fosc/(384·波特率)=256-20×11.0592×106/(384×2400)=244

十进制数244转换成十六进制数为F4H,将T1的初值设为F4H。

由于设置波特率和初值需要计算,比较麻烦,一般情况下可查表来进行设置。常见的波特率设置见表6-2。

表6-2 常见的波特率设置

978-7-111-43252-4-Chapter06-23.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈