1、波特率计算在串行通信中,收发双方对发送或接收的数据速率要有一定的约定,我们通过软件对MCS51 串行口编程可约定四种工作方式。其中,方式 0 和方式 2 的波特率是固定的,而方式 1 和方式 3 的波特率是可变的,由定时器 T1 的溢出率决定。串行口的四种工作方式对应着三种波特率。由于输人的移位时钟的来源不同,所以,各种方式的波特率计算公式也不同。一、方式 0 的波特率方式 0 时,移位时钟脉冲由 56(即第 6 个状态周期,第 12 个节拍)给出,即每个机器周期产生一个移位时钟,发送或接收一位数据。所以,波特率为振荡频率的十二分之一,并不受 PCON 寄存器中 SMOD 的影响,即:方式 0
2、 的波特率fosc12三、方式 l 和方式 3 的波特率方式 1 和方式 3 的移位时钟脉冲由定时器 T1 的溢出率决定,故波特宰由定时器 T1 的溢出率与 SMOD 值同时决定,即:方式 1 和方式 3 的波特率2SMOD/32T1 溢出率其中,溢出率取决于计数速率和定时器的预置值。计数速率与 TMOD 寄存器中 CT 的状态有关。当 CT0 时,计数速率fosc2;当 CT1 时,计数速率取决于外部输入时钟频率。当定时器 Tl 作波特率发生器使用时,通常选用可自动装入初值模式(工作方式 2),在工作方式 2 中,TLl 作为计数用,而自动装入的初值放在 THl 中,设计数初值为 x,则每过
3、“256 一 x”个机器周期,定时器 T1 就会产生一次溢出。为了避免因溢出而引起中断,此时应禁止 T1 中断。这时,溢出周期为:系统晶振频率选为 110592MHZ 就是为了使初值为整数,从而产生精确的波特率。如果串行通信选用很低的波特率,可将定时器 Tl 置于工作方式 0 或工作方式 1,但在这种情况下,T1 溢出时,需用中断服务程序重装初值。中断响应时间和执行指令时间会使波特率产生一定的误差,可用改变初值的办法加以调整。表 62 列出了各种常用的波特率及其初值。SMOD=0 时,波特率=fose/32*12(256-X) SOMD=1 时,波特率=2*fose/32*12(256-X) X 为定时器初值,SMOD 是特殊功能寄存器 PCON 的 D7 位