![](https://csdnimg.cn/release/download_crawler_static/5433207/bg5.jpg)
图 8-4 SCON 和 PCON 中各位定义
MCS-51 对串行口的控制是通过 SCON 实现的,也和电源控制寄存器 PCON 有关。SCON
和 PCON 都是特殊功能寄存器,地址分别为 98H 和 87H,如图 8-4 所示。
(1)SCON 各位定义
SM0 和 SM1:为串行口方式控制位,用于设定串行口工作方式,如表 8-1 所列。
表 8-1 中行口的工作方式和所用波特率对照表
SM0 SM1 相应工作方式 说 明 所用波特率
0 0 方式 0 同步移位寄存器 f
OSC
/2
0 1 方式 1 10 位异步收发 由定时器控制
1 0 方式 2 11 位异步收发 f
OSC
/32 或f
OSC
/64
1 1 方式 3 11 位异步收发 由定时器控制
SM2:为多机通信控制位,主要在方式 2 和方式 3 下使用。在方式 0 时,SM2 不用,
应设置为 0 状态。在方式 1 下,SM2 也应设置为 0,此时 RI 只有在接收电路接收到停止位
“1”时才被激活成“1”,并能自动发出串行口中断请求(设中断是开放的)。在方式 2 或方
式 3 下,若 SM2=0,串行口以单机发送或接收方式工作,TI 和 RI 以正常方式被激活,但
不会引起中断请求;若 SM2=1 和 RB8=1 时,RI 不仅被激活而且可以向 CPU 请求中断。
REN:为允许接收控制位。REN=0,禁止串行口接收;REN=l,允许串行口接收。
TB8:为发送数据第 9 位,用于在方式 2 和方式 3 时存放发送数据第 9 位。TB8 由软件
置位或复位。
RB8:为接收数据第 9 位,用于在方式 2 和方式 3 时存放接收数据第 9 位。在方式 1 下,
若 SM2=0,则 RB8 用于存放接收到的停止位。方式 0 下,不使用 RB8。
TI:为发送中断标志位,用于指示一帧数据发送完否?在方式 0 下,发送电路发送完第
8 位数据时,TI 由硬件置位;在其他方式下,TI 在发送电路开始发送停止位时置位。这就
是说:TI 在发送前必须由软件复位,发送完一帧后由硬件置位。因此,CPU 查询 TI 状态便
可知晓一帧信息是否已发送完毕。
RI:为接收中断标志位,用于指示一帧信息是否接收完。在方式 1 下,RI 在接收电路
接收到第 8 位数据时由硬件置位;在其他方式下,RI 是在接收电路接收到停止位的中间位
置时置位的。RI 也可供 CPU 查询,以决定 CPU 是否需要从“SBUF(接收)”中提取接收
到的字符或数据。RI 也由软件复位。
(2)PCON 各位的定义
SMOD:为波特率选择位。在方式 1、方式 2 和方式 3 时,串行通信波特率与 2
SMOD
成
正比。即:当SMOD=1 时,通信波特率可以提高一倍。PCON中的其余各位用于MCS-51 的
电源控制。
8.2.2 串行口的工作方式
MCS-51 有方式 0、方式 1、方式 2 和方式 3 等 4 种工作方式。现对每种工作方式下的
特点作进一步说明。
1.方式 0
在方式 0 下,串行口的 SBUF 是作为同步的移位寄存器用的。在串行口发送时,SBUF
(发送)相当于一个并入串出的移位寄存器,由 MCS-51 的内部总线并行接收 8 位数据,并
从 RXD 线串行输出;在接收操作时,SBUF(接收)相当于一个串人并出的移位寄存器,
从 RXD 线接收一帧串行数据,并把它并行地送入内部总线。在方式 0 下,SM2、RB8 和 TB8
皆不起作用,它们通常均应设置为“0”状态。
4