80C51的串行口的结构
SBUF:两个物理上独立的接收、发送缓冲器。他们两个占用同一个地址99H。接收器是双缓冲结构,发送缓冲器,因为发送时,CPU是主动的,不会产生重叠错误。
80C51的串行口的控制寄存器
1.SCON是一个特殊功能寄存器,用来设定串行口的工作方式、接收/发送控制以及设置状态标志。
SM0和SM1是工作方式选择位(和之前一样),可以选择四种工作方式,如下
SM0、SM1 | 工作方式 | 说明 | 波特率 |
00 | 方式0 | 移位寄存器 | 12 |
01 | 方式1 | 10位异步收发器(8位数据) | 可变 |
10 | 方式2 | 11位异步收发器(9位数据) | 64或32 |
11 | 方式3 | 11位异步收发器(9位数据) | 可变 |
RI(SCON.0),接收中断标志位。在方式0时,当串行接收第8位数据结束时;或在其他方式,串行接收停止位中间时,由内部硬件使RI置1,向CPU发出中断申请。在中断服务程序中,用软件将其清0,取消此中断申请。
TI(SCON.1),发送中断标志位。在方式0时,当串行发送第8位数据结束时;或在其他方式,串行发送停止位中间时,由内部硬件使TI置1,向CPU发出中断申请。在中断服务程序中,用软件将其清0,取消此中断申请。
RB8(SCON.2),在方式2或方式3中,是接受到数据的第九位,可以用软件规定起作用,可以用作数据的奇偶校验位。在多机通信中,作为地址帧、数据帧的标志位。在方式1时,若SM2=0,则RB8是接收到的停止位。
TB8(SCON.3),在方式2或方式3中,是发送数据的第九位,可以用软件规定起作用,可以用作数据的奇偶校验位。在多机通信中,作为地址帧、数据帧的标志位。在方式0和方式1中,该位未用。
REN(SCON.4),允许串行接受位。由软件置REN=1,则启动串行口接收数据。若软件置REN=0,则禁止接收。
SM2(SCON.5),多机通信控制位。主要用于方式2和方式3,当接收机的SM2=1时,可以利用收到的RB8来控制是否激活RI。(RB8=0时,不激活RI,收到的信息丢弃;RB8=1时,激活RI,收到的数据进入SBUF,进而在中断服务中将数据从SBUF中读走)。当接收机的SM2=0时,不论收到的RB8为0和1,均可以是收到的数据进入SBUF,并激活RI(即此时RB8不具有控制RI激活的功能)。通过控制SM2,可以实现多机通信。在方式0时,SM2必须是0。在方式1时,若SM2=1,则只有接收到有效停止位时,RI才置1。
2.PCON中只有一位SMOD与串行口工作有关,如下
SMOD(PCON.7),波特率倍增位。在串行口方式1、方式2、方式3时,波特率与SMOD有关,当SMOD=1时,比特率增加一倍。复位时,SMOD=0。