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与串行口有关。
SMOD位:波特率挑选位。
例如,方法1的波特率计算公式为
当SMOD=1时,要比SMOD=O时的波特率加倍,所以也称SMOD位为波特率倍增位。