目录
[2. 单片机串口介绍](#2. 单片机串口介绍)
[2.1 接口标准](#2.1 接口标准)
[2.2 串口内部结构](#2.2 串口内部结构)
[2.3 串口相关寄存器](#2.3 串口相关寄存器)
[2.3.1 串口控制寄存器 SCON](#2.3.1 串口控制寄存器 SCON)
[2.3.2 电源控制寄存器 PCON](#2.3.2 电源控制寄存器 PCON)
[2.4 串口工作方式](#2.4 串口工作方式)
[2.4.1 方式0](#2.4.1 方式0)
[2.4.2 方式1](#2.4.2 方式1)
[2.4.3 方式2和方式3](#2.4.3 方式2和方式3)
[2.4.4 波特率的计算](#2.4.4 波特率的计算)
2. 单片机串口介绍
串口通信是指外设和计算机间通过数据信号线、地线等按位进行传输数据的一种通信方式,属于串行通信
串口是一种接口标准,它规定了接口的电气标准,没有规定接口插件电缆以及使用的协议
2.1 接口标准
接口标准有很多,常用的是 RS-232、RS-485
RS-232 是 RS-232C 的改进,原理相同,这里用 RS-232C进口进行讲解
RS-232C 是EIA(美国电子工业协会)1969年修订 RS-232C 标准,定义了数据终端设备(DTE)与数据通信设备(DCE)之间的物理接口标准
接口规定使用25针连接器,简称 DB25,连接器的尺寸及每个插针的排列位置都有明确的定义

RS-232C 还有一种9针的非标准连接器接口,简称 DB9,串口通信使用的大都是 DB9 接口
DB25 和 DB9 接头有公头、母头之分,其中带针状的接头是公头,带孔状的接头是母头

公头和母头的管脚定义顺序是不一样的,常用管脚功能如下:
常用 2,3,7 管脚,即TXD、RXD、SGND

RS232C 对逻辑电平也做了规定:在 TXD、RXD 数据线上:
逻辑1 为 -3 -- -15V 的电压;逻辑 0 为 3 -- 15V 的电压
可见,RS-232C 是用正负电压 表示逻辑状态,与晶体管逻辑集成电路(TTL)以高低电平表示逻辑状态的规定相反,而 51单片机 使用的就是 TTL电平,要实现 51 单片机与计算机的串口通信,需要进行TTL 与 RS-232C 电平转换 (通常使用的电平转换芯片是 MAX232)
串口数据收发线要交叉连接,计算机的 TXD 要对应单片机的 RXD,计算机的 RXD 要对应单片机的 TXD,并且共 GND

RS232 的通信协议比较简单,通常遵循96-N-8-1 格式
96:通信波特率为 9600,串口通信中通常使用的是异步串口通信,即没有时钟线,所以两个设备通信,必须要保持一致的波特率
N:表示无校验位,由于串口通信相对更容易受到外部干扰导致传输数据出现偏差,可以在传输过程加上校验位来解决这个问题
8::表示数据位数为 8位
1:表示 1 位停止位,串口通讯的数据包从起始信号开始,直到停止信号结束。(数据包的起始信号由一个逻辑 0 的数据位表示,停止信号可由 0.5、1、1.5 或 2 个逻辑 1 的数据位表示,双方约定一致即可)
2.2 串口内部结构
**SBUF:**串行缓冲寄存器(实际是两个独立寄存器:发送缓冲器、接收缓冲器,共用一个地址99H)。发送时,CPU 向 SBUF 写入数据,数据进入发送缓冲器;接收时,接收完成的数据存入接收缓冲器,CPU 从 SBUF 读取。
TH1、TL1:定时器 1 的高 8 位和低 8 位寄存器,51 串口的波特率通常由定时器 1(工作在定时模式)的溢出率决定。
发送控制器 :控制串行数据的发送过程,完成 "并行→串行" 转换及帧格式(起始位、数据位、停止位)的生成,TI是发送中断标志位(发送完成后自动置 1)。
接收控制器 :控制串行数据的接收过程,完成 "串行→并行" 转换及帧校验,RI是接收中断标志位(接收完成后自动置 1)。
TI和RI是 "完成信号",需软件清零(避免重复触发中断)
移位寄存器:接收时用于暂存串行输入的 bits,逐位拼接成完整字节后送入接收 SBUF。
控制门 :发送时的开关,在发送控制器的控制下,将发送 SBUF 的数据按串行时序输出到TXD引脚。
TXD/RXD:串口的发送 / 接收引脚(物理接口),分别输出串行发送信号和输入串行接收信号。
SMOD:波特率倍增位(来自 PCON 寄存器的最高位),用于调整波特率分频系数(0 = 默认分频,1 = 分频系数减半)。
≥1(或门) :中断触发逻辑,当TI或RI置 1 时,产生串口中断请求,通知 CPU 处理(需提前开启中断允许)。
发送流程(数据从 CPU 到 TXD)
- CPU 将待发送的 8 位并行数据写入
SBUF(发送缓冲器); - 发送控制器检测到发送缓冲器有数据后,启动发送:
- 先通过控制门输出起始位(低电平);
- 再将发送缓冲器的 8 位数据通过控制门逐位串行输出(从低位到高位);
- 最后输出停止位(高电平),完成一帧数据发送;
- 发送完成后,发送控制器自动将
TI(发送中断标志)置 1; TI通过或门触发串口中断(若中断允许),CPU 可在中断服务程序中清除TI,准备下一次发送。
接收流程(数据从 RXD 到 CPU)
RXD引脚检测到外部串行信号的起始位(低电平跳变),触发接收控制器启动接收;- 接收控制器根据波特率时钟(与发送端同步)对
RXD信号采样,将串行 bits 逐位移入移位寄存器; - 移位寄存器收集满 8 位数据后,自动拼接成并行字节,送入接收
SBUF; - 接收完成(检测到停止位)后,接收控制器将
RI(接收中断标志)置 1; RI通过或门触发串口中断(若中断允许),CPU 在中断服务程序中读取SBUF中的数据,并清除RI,准备下一次接收。
波特率生成(核心:定时器 1 的作用)
51 串口的波特率由定时器 1 的溢出率决定(仅异步模式 1、3),图中明确了其计算逻辑:
- 定时器 1(TH1、TL1)工作在方式 2(8 位自动重装),定时溢出时产生 "T1 溢出率"(单位:次 / 秒);
- 溢出率经过分频电路处理:
- 当
SMOD=0时,分频系数为÷16; - 当
SMOD=1时,分频系数为÷2(波特率翻倍);
- 当
- 最终波特率公式:波特率 = (2^SMOD / 32) × (T1 溢出率)(T1 溢出率 = 晶振频率 / [12 × (256 - TH1)],12 是 51 的机器周期分频系数)

2.3 串口相关寄存器
2.3.1 串口控制寄存器 SCON

SM0、SM1 为工作方式选择位:

RB8 :在方式 2 / 3中,是接收 数据的**第9位,**作为奇偶校验位或地址/数据帧的标志位
TB8 :在方式 2 / 3中,是发送 数据的第9位,可以用软件规定其作用。在方式 0 /1 中,该位未用到
R1:接收中断标志位 。在 方式0 时,当串行发送第 8 位数据结束时,或在其他方式中,串行接收 停止位的中间时,由内部硬件使 R1 置1,向 CPU 发送中断申请 。也必须在中断服务程序中,用软件将其清 0,取消此中断申请
SM2:多机通信控制位 ,可以实现多机通信(一台主机(Master)和多台从机(Slave)通过同一根串口总线(TX/RX)通信」的模式),主要用于方式 2 和方式 3( 因为 9 位数据中,第 9 位是奇偶校验位(P),多机通信时会把这一位复用为 地址 / 数据标志位(TB8/RB8))(多机通信一般将 SM2 置 1)
SM2=1,RB8=0,不激活R1,收到的信息丢弃
RB8=1,收到的数据进入SBUF,并激活 R1,进而在中断服务中将数据从SBUF读走
SM2=0,不论收到的 RB8 为0或1,均可以使收到的数据进入SBUF,并激活R1(即此时RD8不具有控制R1激活的功能)
REN:允许串行接收位。
REN=1,启动串行口接收数据;REN=0,禁止串行口接收数据
T1:发送中断标志位 。在 方式0 中,当串行发送第 8 位数据结束时,或在其他方式中,串行发送停止位的开始时,由内部硬件使 T1 置1,向 CPU 发送中断申请。在中断服务程序中,必须用软件将其清 0,取消此中断申请
2.3.2 电源控制寄存器 PCON
SMOD:波特率倍增位。在串口 方式1、方式2、方式3 时,波特率与 SMOD 有关,当SMOD = 1时,波特率提高一倍。
复位时,SMOD=0

2.4 串口工作方式
2.4.1 方式0
方式0 时,串行口的输入输出方式为同步 移位寄存器,主要用于**拓展并行输入/输出口,数据输入的节奏完全由 TXD 的移位脉冲控制,**这是与异步通信(方式 1/2/3)最核心的区别
方式 0 输出的本质是 "用同步移位脉冲驱动 8 位数据串行输出",核心作用是通过 TXD 的时钟同步,将 SBUF 中的并行数据转为 RXD 的串行数据,常用于扩展并行输出口(例如:通过串转并芯片 74HC595,将 RXD 的串行数据转为 8 位并行数据输出)
功能:同步移位输出(或输入),不用于常规异步串口通信(无起始位 / 停止位,仅 8 位数据
引脚分工:
RXD(P3.0):作为数据输出线(发送时输出 8 位数据);
TXD(P3.1):作为移位脉冲线(输出同步时钟,控制数据移位节奏);
波特率固定 :仅由晶振频率决定,为 fosc/12(如 11.0592MHz 晶振,波特率 = 11.0592MHz/12=921600Hz)。
数据由 RXD(P3.0)引脚输入或输出,同步移位脉冲由 TXD(P3.1)引脚输出
发送和接收均为 8 位数据,低位在前,高位在后,波特率固定为 fosc/12
对应的输入输出时序图如下:
方式 0 输出:( 单片机→外部(RXD 输出数据))
最上方:"写入 SBUF"(启动信号)
- 当 CPU 执行 "写 SBUF" 指令(如
MOV SBUF, A)时,产生一个写脉冲,触发方式 0 的发送过程。 - 这是整个时序的 "起点":写入 SBUF 后,硬件自动启动数据移位输出。
中间:RXD(数据输出)与 TXD(移位脉冲)的配合:
-
RXD(数据) :写入 SBUF 后,SBUF 中的 8 位并行数据(D0~D7)会通过 RXD 引脚逐位串行输出,时序上严格与 TXD 的移位脉冲同步。
- 输出顺序:从最低位 D0 开始,依次输出 D1~D7(图中明确标注 D0→D1→...→D7 的顺序);
- 无额外帧格式:仅 8 位数据,无起始位、停止位或校验位(区别于方式 1/2/3 的异步帧)。
-
TXD(移位脉冲) :作为同步时钟,每输出一个脉冲,RXD 就移位输出 1 位数据(脉冲前沿 / 后沿触发移位)。
- 脉冲频率:等于方式 0 的波特率(fosc/12),即每个脉冲的周期为 12 个时钟周期(与 51 的机器周期一致);
- 脉冲数量:共 8 个(对应 8 位数据,每位移出对应 1 个脉冲)。
最下方:TI(发送中断标志)的变化
- 当 8 位数据全部输出完成(最后一个移位脉冲结束后),硬件自动将TI(发送中断标志位)置 1(图中最后跳变为高电平),表示 "发送完成"。
- 注意:TI 置 1 后不会自动清零,需通过软件指令(如
CLR TI)手动清零,否则会持续触发串口中断(若中断允许)。

方式 0 输入:( 外部→单片机(RXD 输入数据))
方式 0 输入的本质是 "用 TXD 的同步移位脉冲驱动外部串行数据移入单片机",通过 RXD 接收 8 位纯数据(无额外帧格式),最终存入 SBUF 并以 RI 标志通知 CPU 读取。其核心价值是利用同步时钟实现并行输入口的扩展
输入的启动需要两个关键条件(时序图中明确标注):
- REN=1:接收允许控制位(来自 SCON 寄存器)必须置 1,打开串口接收功能(相当于 "接收开关");
- RI=0 :接收中断标志位必须先清零(通常由软件初始化时执行
CLR RI),否则硬件会认为 "上一次接收未处理",不启动新的接收。
-
RXD(数据输入):外部串行数据通过 RXD 引脚输入,时序上严格与 TXD 输出的移位脉冲同步。
- 输入顺序:从最低位 D0 开始,依次输入 D1~D7(图中明确标注 D0→D1→...→D7 的顺序),共 8 位数据(无起始位、停止位,仅纯数据位,区别于异步通信);
- 数据有效性:每个数据位的电平需在移位脉冲的有效边沿(通常是脉冲的下降沿或上升沿)保持稳定,确保硬件正确采样。
-
TXD(移位脉冲):作为同步时钟,由单片机内部生成,用于控制数据移位输入的节奏(与方式 0 输出时的脉冲来源一致)。
- 脉冲频率:固定为
fosc/12(晶振频率 ÷12),与方式 0 输出的波特率相同(例如 12MHz 晶振,脉冲周期为 1μs); - 脉冲数量:共 8 个(对应 8 位数据,每输入 1 位数据需要 1 个移位脉冲)。
- 脉冲频率:固定为
当 8 位数据(D0~D7)全部通过 RXD 移入内部移位寄存器后:
- 硬件自动将移位寄存器中的 8 位并行数据送入接收 SBUF(供 CPU 读取);
- 同时,硬件将
RI(接收中断标志位)置1(时序图中未画全,但属于接收完成的关键结果),表示 "接收完成"。

2.4.2 方式1
方式1是10位数据的异步 通信口,是 51 串口最常用的通信模式(适用于 RS-232 等异步通信场景),核心是 "带完整帧格式的异步串行输出"。
- 功能:异步串行通信输出,支持标准串口通信(如与 PC 机、传感器等设备通信);
- 帧格式 :包含1 位起始位 + 8 位数据位 + 1 位停止位(共 10 位,无固定校验位,可通过软件实现);
- 波特率:可变,由定时器 1(或定时器 2)的溢出率决定(公式:波特率 =(2^SMOD/32)× 定时器 1 溢出率),区别于方式 0 的固定波特率;
- 引脚 :仅通过
TXD(P3.1)输出串行信号(无需同步脉冲,异步通信的特点)。

对应的输入输出时序如下图所示:
方式 1 输出:
方式 1 输出的本质是 "按异步帧格式自动打包并行数据并串行输出",通过起始位和停止位实现异步通信中的 "帧同步",波特率的灵活性使其适用于大多数串口通信场景。
最上方:"写入 SBUF"(发送启动信号)
当 CPU 执行 "写 SBUF" 指令(如MOV SBUF, A)时,产生一个写脉冲,触发方式 1 的发送过程。这是整个时序的起点 ------ 写入数据后,硬件自动开始生成帧格式并串行输出。
中间:TXD(发送引脚)的帧格式输出(核心)
TXD引脚输出的信号包含完整的异步帧结构,时序上严格按 "起始位→数据位→停止位" 顺序输出,每一位的持续时间由波特率决定(波特率越高,每位时间越短):
- 起始位:1 位,低电平(逻辑 0),用于通知接收方 "数据开始"(图中 "起始" 标注部分);
- 数据位:8 位,从最低位 D0 开始,依次输出 D1~D7(图中明确标注 D0→D1→...→D7 的顺序),这是实际传输的有效数据;
- 停止位:1 位,高电平(逻辑 1),用于表示 "一帧数据结束"(图中 "停止位" 标注部分),接收方可通过停止位确认帧的完整性。
最下方:TI(发送中断标志)的变化
当一帧数据(起始位 + 8 位数据 + 停止位)全部发送完成后,硬件自动将TI(发送中断标志位)置 1(图中最后跳变为高电平),表示 "当前数据发送完毕"。
注意:TI 置 1 后不会自动清零,必须通过软件指令(如CLR TI)手动清除,否则会持续触发串口中断(若已开启中断允许);
TI 置位的时机通常在停止位发送期间或结束后,确保 CPU 在处理中断时,当前帧已完全发送。
方式1输入
波特率:与发送方保持一致(由单片机定时器 1/2 配置,同方式 1 输出);
引脚 :仅通过RXD(P3.0)接收外部串行信号。
最上方:RXD(接收引脚)的输入帧结构
RXD引脚接收外部发送的完整异步帧,信号变化严格遵循 "起始位→数据位→停止位" 的顺序:
- 起始位:1 位低电平(逻辑 0),是接收的 "触发信号"------ 单片机通过检测 RXD 上的低电平跳变(从空闲高电平到低电平),判断新帧开始;
- 数据位:8 位,从最低位 D0 到最高位 D7 依次输入(图中明确标注 D0→D1→...→D7),是实际接收的有效数据;
- 停止位:1 位高电平(逻辑 1),表示一帧数据结束,单片机通过检测停止位确认帧的完整性(若停止位无效,可能触发帧错误)。
中间:位采样脉冲(内部同步核心)
方式 1 输入的关键是内部位采样脉冲(图中 "位采样脉冲" 波形),其作用是 "在异步通信中,通过高频采样确认每一位的电平",具体特性:
- 频率:固定为波特率的 16 倍(例如波特率 9600 时,采样脉冲频率为 153600Hz);
- 采样逻辑 :每一位数据的持续时间内(1 / 波特率),会产生 16 个采样脉冲,通常取第 7、8、9 个脉冲的采样结果(多数一致原则)作为该位的有效电平 ------ 目的是避开信号跳变时的噪声,提高抗干扰能力;
- 同步作用:通过采样脉冲的计数,单片机可精准定位每一位的位置(例如:起始位检测后,计数 16 个脉冲进入 D0 位的采样区间,再计数 16 个脉冲进入 D1 位,以此类推)。
最下方:RI(接收中断标志)的变化
当一帧数据(起始位 + 8 位数据 + 停止位)全部接收完成后:
- 硬件自动将 8 位数据从移位寄存器送入接收 SBUF(供 CPU 读取);
- 同时,硬件将
RI(接收中断标志位)置1(图中最后跳变为高电平),表示 "接收完成"。
需注意:
- RI 置 1 后不会自动清零,必须通过软件指令(如
CLR RI)手动清除,否则会阻塞下一次接收(单片机默认 "RI=1 时不启动新接收"); - RI 置位的时机通常在停止位接收完成后,确保 CPU 读取 SBUF 时数据已稳定。

方式一输入:
其本质:"用 16 倍波特率的内部采样脉冲,从 RXD 引脚的异步帧中'抠出'8 位有效数据 ",整个过程无需外部时钟线,仅通过约定波特率和帧格式实现通信。
RXD(接收引脚):外部输入的异步帧结构
RXD 引脚接收的信号是一个完整的异步帧,包含三部分(与方式 1 输出的帧格式完全对应,确保收发匹配):
- 起始位:1 位低电平(逻辑 0)。空闲状态下 RXD 为高电平,当检测到 "高→低" 跳变时,单片机判断 "新帧开始",触发接收流程。
- 数据位:8 位,从最低位 D0 到最高位 D7 依次传输(图中明确标注 D0→D1→...→D7)。这是实际需要接收的有效数据,比如传感器的测量值、PC 机发送的指令等。
- 停止位:1 位高电平(逻辑 1)。用于标记一帧数据结束,单片机通过检测停止位的有效性(是否为高电平)判断帧是否完整(若停止位无效,可能是波特率不匹配或信号干扰)。
位采样脉冲:异步通信的 "同步核心"
异步通信没有外部时钟线,单片机通过内部位采样脉冲实现与发送方的同步,这是方式 1 输入的关键设计:
- 频率:固定为 "波特率的 16 倍"(例如波特率 9600 时,采样脉冲频率 = 9600×16=153600Hz)。
- 作用 :每一位数据的持续时间(1 / 波特率)内,会产生 16 个采样脉冲,通过多次采样确认该位的真实电平(抗干扰)。
- 具体逻辑:对每一位,取第 7、8、9 个采样脉冲的结果(中间位置,避开信号跳变的不稳定期),若多数为高电平则判定为 "1",多数为低则判定为 "0"。
- 同步过程:检测到起始位的 "高→低" 跳变后,单片机开始计数采样脉冲,每计满 16 个脉冲,就进入下一位(D0→D1→...→停止位)的采样区间,确保精准定位每一位。
RI(接收中断标志):接收完成的 "通知信号"
当一帧数据(起始位 + 8 位数据 + 停止位)全部接收并解析完成后:
- 8 位数据会从内部移位寄存器自动存入 "接收 SBUF"(供 CPU 读取);
- 硬件自动将
RI(接收中断标志位)置1(图中最后跳变为高电平),表示 "数据已准备好,可读取"。

2.4.3 方式2和方式3
方式2和方式3是11位数据的异步通信口。TXD是数据发送引脚,RXD是数据接受引脚
方式 2 和方式 3 的共性与区别(理解时序的前提)
共性 :均为9 位异步通信模式,帧格式相同(含第 9 位数据 TB8),输出时序完全一致(因此共用一张时序图)。
- 区别 :仅波特率生成方式不同:
- 方式 2:波特率固定,由晶振频率和 SMOD 位决定(公式:波特率 =(2^SMOD / 64)×fosc);
- 方式 3:波特率可变,与方式 1 相同(由定时器 1/2 的溢出率决定,公式:波特率 =(2^SMOD / 32)× 定时器溢出率)。

① 方式二和方式三输出
最上方:"写入 SBUF"(启动信号)
与方式 1 相同,当 CPU 执行 "写 SBUF" 指令(如MOV SBUF, A)时,触发发送过程。此时除了写入 8 位数据到 SBUF,还需提前通过软件设置TB8(第 9 位数据,来自 SCON 寄存器的 TB8 位)------ 这是方式 2/3 区别于方式 1 的核心(方式 1 仅 8 位数据)。
中间:TXD(发送引脚)的 9 位帧结构(核心)
TXD引脚输出的帧结构包含1 位起始位 + 8 位数据位 + 1 位 TB8(第 9 位)+1 位停止位(共 11 位),每一位的持续时间由波特率决定:
- 起始位:1 位低电平(逻辑 0),用于通知接收方 "数据开始"(与方式 1 一致);
- 数据位:8 位,从最低位 D0 到最高位 D7 依次输出(图中 D0→D1→...→D7),为实际传输的有效数据;
- TB8(第 9 位) :1 位特殊位(图中 "TB8" 标注),其含义由用户定义,常见用途:
- 多机通信中:用于区分 "地址帧"(TB8=1)和 "数据帧"(TB8=0);
- 奇偶校验:TB8 作为奇偶校验位(如数据位中 1 的个数为奇数时 TB8=1,实现奇校验);
- 停止位:1 位高电平(逻辑 1),表示一帧数据结束(与方式 1 一致)。
最下方:TI(发送中断标志)的变化
当一帧完整数据(起始位 + 8 位数据 + TB8 + 停止位)发送完成后,硬件自动将TI(发送中断标志位)置 1(图中最后跳变为高电平),表示 "发送完成"。
与方式 1 相同:
- TI 置 1 后不会自动清零,需通过软件(如
CLR TI)手动清除,否则会持续触发中断; - TI 置位时机在停止位发送期间或结束后,确保 CPU 处理时帧已完全发送。

② 方式二和方式三输入
方式 2 和 3 输入的本质是 "**在方式 1 基础上增加第 9 位 RB8 的接收逻辑,**它们是方式 1 的增强版,适用于需要额外控制位的复杂通信场景。
RXD(接收引脚):9 位异步帧结构(核心)
RXD 引脚接收的外部信号包含完整的 9 位帧,结构为:1 位起始位 + 8 位数据位(D0~D7)+1 位 RB8(第 9 位)+1 位停止位(共 11 位),与方式 2/3 输出的帧格式完全对应(确保收发匹配):
- 起始位:1 位低电平(逻辑 0),通过 "高→低" 跳变触发接收(与方式 1 一致);
- 数据位:8 位,从最低位 D0 到最高位 D7 依次接收(图中 D0→D1→...→D7),为实际有效数据;
- RB8(第 9 位) :1 位特殊位(图中 "RB8" 标注),是接收方对发送方 TB8 的响应,其含义由通信协议定义:
- 多机通信中:用于判断帧类型(RB8=1 表示 "地址帧",RB8=0 表示 "数据帧");
- 奇偶校验中:作为接收数据的校验位(与发送方 TB8 对比,判断是否校验错误);
- 停止位:1 位高电平(逻辑 1),标记一帧结束,用于确认帧完整性。
位采样脉冲:异步同步的核心机制
与方式 1 输入相同,方式 2/3 输入依赖内部位采样脉冲实现异步同步:
- 频率:为波特率的 16 倍(例如波特率 9600 时,采样脉冲频率 = 153600Hz);
- 作用:每一位(包括 RB8)的持续时间内产生 16 个脉冲,通过 "第 7、8、9 个脉冲多数采样" 确认电平(抗干扰);
- 同步逻辑:起始位触发后,每计数 16 个脉冲进入下一位采样区间(依次覆盖 D0→D7→RB8→停止位),确保精准定位每一位。
RI(接收中断标志):接收完成的通知
当一帧数据(起始位 + 8 位数据 + RB8 + 停止位)全部接收并解析后:
- 8 位数据存入接收 SBUF(供 CPU 读取);
- 第 9 位 RB8 存入SCON 寄存器的 RB8 位(单独存储,区别于 8 位数据);
- 硬件自动将
RI(接收中断标志位)置1(图中最后跳变为高电平),表示 "接收完成,数据可用"。
关键注意:
- RI 需软件清零(如
CLR RI),否则阻塞下一次接收; - CPU 读取时,需同时处理 SBUF(8 位数据)和 RB8(第 9 位),例如多机通信中先判断 RB8 是否为 1(地址帧),再决定是否响应。

2.4.4 波特率的计算
一般使用工具辅助计算
