在串行通信中,收发双方对发送或接收的数据速率要有一定的约定,我们通过软件对MCS—51串行口编程可约定四种工作方式。其中,方式 0和方式 2 的波特率是固定的,而方式 1 和方式 3 的波特率是可变的,由定时器 T1 的溢出率决定。 串行口的四种工作方式对应着三种波特率。由于输人的移位时钟的来源不同,所以,各种方式的波特率计算公式也不同。 一、方式 0的波特率 方式 0时,移位时钟脉冲由 S6(即第 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, 但 在 这 种 情 况 下 , T1溢 出 时 , 需 用 中 断 服 务 程 序 重 装 初 值 。 中 断 响 应 时 间 和 执 行 指 令 时 间 会使 波 特 率 产 生 一 定 的 误 差 , 可 用 改 变 初 值 的 办 法 加 以 调 整 。 表 6—2 列...