3.3.2 串行口控制器
三种串行通信的数据传输方式为:单工方式、半双工方式和全双工方式,见图3-14。
1)单工方式:数据只能从发送站A向接收站B单向传输。
2)半双工方式:数据在同一时刻只可从站A发送到站B或只可从站B发送到站A。
3)全双工方式:站A和站B均可独立同时实现数据的发送和接收。

图3-14 串行通信的数据传送方式
51系列单片机串行口结构见图3-15,属全双工通信方式。主要由两个独立的发送/接收缓冲器SBUF、输入移位寄存器、接收和发送控制寄存器SCON、波特率发生器(含电源控制寄存器PCON的D7位,又名波特率倍增位)等部件组成。串行通信可通过下述特殊功能寄存器的设置来实现。

图3-15 51系列单片机串行口结构
1.串行数据缓冲器SBUF
SBUF是物理上独立的两个8位发送、接收寄存器,共用一个地址99H,只能字节寻址。其读、写指令很简单。

2.串行口控制寄存器SCON
SCON用来控制串行通信的工作方式,在收、发过程中设置中断状态标志。字节地址为98H,可位寻址,寄存器的位定义如下:

(1)SM0,SM1 串行口工作方式选择位。串行口工作方式见表3-3,其中方式1、2和3属通用异步接收器/发送器功能(UART)。(https://www.daowen.com)
表3-3 串行口工作方式

(2)SM2 多机通信控制位,工作在方式2和3时该位有效。方式0和1时不能使用SM2,应清为零。多机通信中若从机SM2=1,则只有接收到有效停止位时,接收中断标志RI才能置为1。
(3)REN 接收允许控制位。该位由软件置位或清零。该位清为零可禁止数据接收。
(4)TB8 方式2和3发送数据的第9位。该位由软件置位或清零。TB8可作为双机通信的奇偶校验位。在多机通信中,TB8=0,表示数据帧;TB8=1,表示地址帧。
(5)RB8 方式2和方式3接收数据的第9位。RB8可作为双机通信中的奇偶校验位。在方式2和3中,RB8作为多机通信的地址或数据帧标志位。在方式1中,若SM2=0,则RB8接收到的是停止位。方式0中不使用该位。
(6)TI 发送中断标志位。该位用来指示一帧数据是否发送结束。方式0中,8位数据发送完毕后置位,其余三种方式则在发送停止位时置位,向CPU申请中断。也可以由软件查询TI来判断数据是否发送完毕。TI由硬件置位、软件清零。
(7)RI 接收中断标志位。该位用来指示一帧的接收结束。方式0中,8位数据接收完毕后置位,其余三种方式则在接收到停止位的中间部分时置位,向CPU申请中断。也可以由软件查询RI来判断数据是否接收完毕。RI由硬件置位、软件清零。
3.电源控制寄存器PCON
PCON的位定义如下(其中低4位定义见1.6.2节):

PCON中的最高位SMOD是串行口波特率控制位。SMOD=1,波特率加倍。
4.中断允许控制寄存器IE
IE的位定义如下(见3.2.2节):

ES是串行口中断允许控制位。ES=0(1),中断禁止(允许)。只有在EA为1时,ES中断才能生效。