AT89S51单片机串行口的结构

AT89S51单片机串行口的内部结构如下图所示 。它有两个物理上独立的接收、发送缓冲器SBUF(属于特殊功能寄存器) , 可同时发送、接收数据 。发送缓冲器只能写入不能读出 , 接收缓冲器只能读出不能写入 , 两个缓冲器共用一个特殊功能寄存器字节地址(99H) 。
 
串行口的控制寄存器共有两个:特殊功能寄存器SCON和PCON 。下面介绍这两个特殊功能寄存器各位的功能 。
1、串行口控制寄存器SCON
串行口控制寄存器SCON , 字节地址988H , 可位寻址 , 位地址为98H~9FH 。SCON的格式如下图所示 。
 
下面介绍SCON中各位的功能 。
(1) SM0、SMl:串行口4种工作方式选择位 。
SM0、SM1两位的编码所对应的4种工作方式见下表 。
表 串行口的4种工作方式
 
(2) SM2:多机通信控制位 。
因为多机通信是在方式2和方式3下进行的 , 因此SM2位主要用于方式2或方式3中 。当串行口以方式2或方式3接收时 , 如果SM2=1 , 则只有当接收到的第9位数据(RB8)为1时 , 才使RI置l , 产生中断请求 , 并将接收到的前8位数据送人SBUF;当接收到的第9位数据(RB8)为0时 , 则将接收到的前8位数据丢弃 。而当SM2=0时 , 则不论第9位数据是l还是0 , 都将前8位数据送入SBUF中 , 并使RI置1 , 产生中断请求 。
在方式1时 , 如果SM2=1 , 则只有收到有效的停止位时才会激活RI 。
在方式0时 , SM2必须为0 。
(3)REN:允许串行接收位 。
由软件置1或清0 。
REN=1 , 允许串行口接收数据 。
REN=O , 禁止串行口接收数据 。
(4)TB8:发送的第9位数据 。
在方式2和方式3时 , TB8是要发送的第9位数据 , 其值由软件置l或清O 。在双机串行通信时 , TB8一般作为奇偶校验位使用;在多机串行通信中用来表示主机发送的是地址帧还是数据帧 , TB8=1为地址帧 , TB8=0为数据帧 。
(5) RB8:接收的第9位数据 。
工作在方式2和方式3时 , RB8存放接收到的第9位数据 。在方式1 , 如果SM2=0 , RB8是接收到的停止位 。在方式0 , 不使用RB8 。
(6)TI:发送中断标志位 。
串行口工作在方式0时 , 串行发送的第8位数据结束时TI由硬件置1 , 在其他工作方式中 , 串行口发送停止位的开始时置TI为1 。TI=1 , 表示一帧数据发送结束 。TI位的状态可供软件查询 , 也可申请中断 。CPU响应中断后 , 在中断服务程序中向SBUF写入要发送的下一帧数据 。TI必须由软件清0 。
(7) RI:接收中断标志位 。
串行口工作在方式0时 , 接收完第8位数据时 , RI由硬件置1 。在其他工作方式中 , 串行接收到停止位时 , 该位置l 。RI=1 , 表示一帧数据接收完毕 , 并申请中断 , 要求CPU从接收SBUF取走数据 。该位的状态也可供软件查询 。RI必须由软件清0 。
SCON的所有位都可进行位操作清0或置1 。
2、特殊功能寄存器PCON
特殊功能寄存器PCON字节地址为87H , 不能位寻址 。PCON的格式如下图所示 。
 
下面介绍PCON中各个位的功能 。其中 , 仅仅是最高位SMOD与串行口有关 。
【AT89S51单片机串行口的结构】SMOD位:波特率选择位 。
例如 , 方式1的波特率计算公式为
 
当SMOD=1时 , 要比SMOD=O时的波特率加倍 , 所以也称SMOD位为波特率倍增位 。

    推荐阅读