80C51串行通讯波特率设置详解

需积分: 0 0 下载量 90 浏览量 更新于2024-09-21 收藏 170KB PDF 举报
"80C51串行异步通讯波特率设定" 在80C51微控制器中,串行异步通讯是通过UART(通用异步收发传输器)实现的,通常用于与外部设备进行数据交换。设定波特率是确保通信双方能够同步传输的关键。80C51的串行口有四种工作模式,其中模式1和模式3支持可变波特率,适用于RS-232串行通信。 波特率是衡量数据传输速率的单位,表示每秒传输的二进制位数。在80C51中,串行波特率的计算与系统晶振频率和定时器T1的工作模式紧密相关。对于RS-232通信,T1通常配置为模式2,即8位定时器,自动重载模式,作为波特率发生器。 设定波特率的基本公式为: \[ 波特率 = \frac{晶振频率}{192 \times (2^{SMOD} + 1)} \] 这里的SMOD是一个特殊功能寄存器(SFR)位,当SMOD=0时,不翻倍;当SMOD=1时,波特率翻倍。因此,波特率可以有两个可能的除数,192或384。 举例来说,如果系统晶振为11.0592MHz,想要设定波特率为9600bps,计算定时器T1的重载值(TH1)如下: \[ 定时器重载值 = \frac{晶振频率}{波特率 \times (2^{SMOD} + 1)} = \frac{11059200}{9600 \times (2^0 + 1)} = 253 \] 因此,TH1的值为253(十六进制的xFD)。 反过来,如果我们知道波特率和SMOD值,也可以计算晶振频率: \[ 晶振频率 = 波特率 \times (2^{SMOD} + 1) \times 192 \] 例如,当SMOD=1,设定波特率为19.2Kbps,最小晶振频率计算如下: \[ 最小晶振频率 = 19200 \times (2^1 + 1) \times 192 = 3.6864MHz \] 值得注意的是,当定时器工作在模式2时,其最大重载值为255(0xFF),这意味着可以使用不同晶振频率和定时器重载值来达到相同的波特率。比如,3.6864MHz的4倍,即14.7456MHz,同样可以设置为19.2Kbps,但需要不同的定时器重载值。 80C51串行异步通讯的波特率设定涉及晶振频率、定时器工作模式、SMOD位以及波特率计算公式。通过灵活调整这些参数,可以适应不同的通信需求。理解并正确应用这些知识对实现有效的80C51串行通信至关重要。