AT89S52单片机的串行接口主要由两个物理上独立的串行数据缓冲器SBUF、发送控制器、接收控制器、输入移位寄存器和输出控制门组成。
对外表现为两个引脚:RXD(P3.0)串行输入线和TXD(P3.1)串行输出线,串行口的结构如图1所示。
图1 串行口的结构
1.波特率发生器
主要由T1、T2及内部的一些控制开关和分频器所组成。它提供串行口的时钟信号TXCLOCK(发送时钟)和RXCLOCK(接收时钟)。相应的控制波特率发生器的特殊功能寄存器有TMOD、TCON、T2CON、PCON、TL1、TH1、TL2、TH2等。
2.串行数据缓冲寄存器SBUF
串行口数据缓冲器(实际上是两个寄存器)通过特殊功能寄存器SBUF来访问。两个缓冲器在物理上是隔离的,共用一个地址99H(特殊功能寄存器SBUF的地址)。
写入SBUF的数据储存在发送缓冲器,用于串行发送;从SBUF读出的数据来自接收缓冲器。串行发送时,从片内总线向发送缓冲器SBUF写入数据;串行接收时,从接收缓冲器SBUF中读出数据。因此可通过两条指令来表示:
MOVSBUF,A ;启动一次数据发送,可向SBUF再发送下一个数据
MOVA,SBUF ;完成一次数据接收,SBUF可再接收下一个数据
3.串行数据输入/输出引脚
接收方式:串行数据从RXD(P3.0)引脚输入
发送方式下:串行数据通过TXD(P3.1)引脚输出。
4.串行口控制逻辑
发送控制器在波特率作用下,将发送SBUF中的数据由并行转换成串行,逐位地传输到发送端口;同理接收控制器将接收端口的数据由串行转换成并行,存入接收SBUF。如图2。
图2 串行口的控制逻辑 二、串行口控制寄存器SCON
特殊功能寄存器SCON可以位寻址,用于定义串行口的操作方式和控制它的某些功能,字节地址为98H。其各位的定义如图3所示。
图3 SCON
SM0,SM1(D7,D6):串行口操作方式选择位
SM2(D5):串行口多机通信控制位。
SM2=1:如果接收的一帧数据的第九位为1,且原RI=0,则硬件置RI=1,接收数据有效;如果第九位为0,则RI不置1,接收数据无效。
SM2=0:只要接收完一帧数据,不管第九位为1还是0,硬件都置RI=1,接收数据有效。多机通信时,SM2必须置1;双机通信,SM2通常置0。
REN(D4):串行口接收允许控制位。REN=1表示允许接收;REN=0禁止接收。
TB8(D3):方式2和方式3中要发送的第9位数据。
RB8(D2):是方式2和3中已接收到的第9位数据。
TI(D1):发送中断标志。由软件清0。
RI(D0):接收中断标志。由软件清0。
三、电源控制寄存器PCON
电源控制寄存器PCON中,仅有最高位SMOD与串行口控制有关,PCON的地址为87H,只能字节寻址。
SMOD(D7):波特率加倍控制位。
SMOD=1,波特率加倍;
SMOD=0,则不加倍。