7.2.4 波特率设置

7.2.4 波特率设置

在串行通信中,收发双方对发送或接收的数据的波特率要有一个约定。MCS-51单片机串行口有4种工作方式。方式0和方式2的波特率固定不变,而方式1和方式3的波特率可以变化,这由定时器/计数器T1的溢出率决定。串行口4种工作方式对应的波特率根据时钟频率、定时器/计数器T1的溢出率和标志设定进行计算。

1.方式0的波特率

方式0时,每个机器周期产生一个移位脉冲,发送或接收一位数据。因此,波特率是固定的,为fosc/12,不受PCON中SMOD的影响。方式0的波特率用公式表示为:

方式0的波特率=fosc/12

2.方式2的波特率

方式2时,波特率取决于PCON中的SMOD位的值,当SMOD=0时,波特率为fosc的1/64;当SMOD=1时,波特率为fosc的1/32。方式2的波特率用公式表示为:

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

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

方式1和方式3的波特率是可调整的,由定时器/计数器T1的溢出率与SMOD位的值同时决定。方式1和方式3的波特率用公式表示为:

方式1的波特率=(2SMOD/32)×定时器/计数器T1的溢出率

方式3的波特率=(2SMOD/32)×定时器/计数器T1的溢出率

其中,定时器/计数器T1的溢出速率取决于定时器/计数器T1的计数速率(在定时方式时,计数速率=fosc/12)和定时器/计数器T1的预置初值。

定时器/计数器T1作波特率发生器时,通常选用定时器/计数器T1工作在方式2,并使其工作在定时方式(即C/T=0)。此时,T1的计数速率为fosc/12(这时应禁止定时器/计数器T1中断)。设定时器初值为X,则每过“256—X”个机器周期,定时器/计数器T1产生一次溢出,用公式表示为:

定时器/计数器T1的溢出速率=(fosc/12)/(256—X)

当给出波特率后,可用下式计算定时器/计数器T1工作在方式2的初始值:

X=256—[fosc×(SMOD+1)]/(384×波特率)

【例7-1】 80C51单片机时钟晶振频率为11.059 2 MHz,选用定时器/计数器T1作为波特率发生器,波特率为4 800 bit/s,求定时器/计数器T1的初值X。

解:设波特率控制位SMOD=0,则:

X=256—(11.059 2×106×(0+1)/(384×4 800)=250=FAH

所以

(TH1)=(TL1)=FAH

系统晶振频率选用11.059 2 MHz,是为了使初值为整数,从而产生精确的波特率。