c51 串口 波特率的计算
在串行通信中,收发双方对发送或接收的数据速率要有一定的约定,我们通过软件对MCS—51串行口编程可约定四种工作方式 。其中,方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器T溢出率决定 。
串行口的四种工作方式对应着三种波特率 。由于输人的移位时钟的来源不同,所以,各种方式的波特率计算公式也不同 。
一、方式0的波特率
方式0时,移位时钟脉冲由56(即第6个状态周期,第12个节拍)给出,即每个机器周期产生一个移位时钟,发送或接收一位数据 。所以,波特率为振荡频率的十二分之一,并不受PCON寄存器中SMOD的影响,即:
方式0的波特率=fosc/12
三、方式l和方式3的波特率
方式1和方式3的移位时钟脉冲由定时器T1的溢出率决定,故波特宰由定时器T1的
溢出率与SMOD值同时决定,即:
方式1和方式3的波特率=2SMOD/32·T1溢出率
其中,溢出率取决于计数速率和定时器的预置值 。计数速率与TMOD寄存器中C/T的状态有关 。当C/T=0时,计数速率=fosc/2;当C/T=1时,计数速率取决于外部输入时钟频率 。
当定时器Tl作波特率发生器使用时,通常选用可自动装入初值模式(工作方式2),在
工作方式2中,TLl作为计数用,而自动装入的初值放在THl中,设计数初值为x,则每过“256一x”个机器周期,定时器T1就会产生一次溢出 。为了避免因溢出而引起中断,此时应禁止T1中断 。这时,溢出周期为:
系统晶振频率选为11.0592MHZ就是为了使初值为整数,从而产生精确的波特率 。
如果串行通信选用很低的波特率,可将定时器Tl置于工作方式0或工作方式1,但在
【c51 串口 波特率的计算】这种情况下,T1溢出时,需用中断服务程序重装初值 。中断响应时间和执行指令时间会使波特率产生一定的误差,可用改变初值的办法加以调整 。
表6—2列出了各种常用的波特率及其初值 。
推荐阅读
- AT89S51的由来及与C51的区别
- 大牛分享单片机编程软件使用经验,Keil C51单片机编程软件使用教程
- 有关Keil软件仿真的51单片机串口调试技巧
- 单片机实现点对点的数据传输-串口通讯
- AT89S51最小系统制做
- 海尔LU65C51电视和LU65C61怎么区分,评测帮你一起选【这几功能你未必知道】
- 【专业评测】美菱茶吧机MY-C813与C518区别在哪里?质量怎么样?这些细节你都了解吗?
- 单片机的C51基础知识