1.SBUF
在逻辑上,SBUF只有一个,既表示发送寄存器,又表示接收寄存器。具有同一个单元地址99H。在物理上,SBUF有两个,一个是发送寄存器,另一个是接收寄存器。在逻辑上,SBUF只有一个,既表示发送寄存器,又表示接收寄存器。具有同一个单元地址99H。在物理上,SBUF有两个,一个是发送寄存器,另一个是接收寄存器。
2.控制寄存器
与串行通信有关的控制寄存器共有三个。
(1)串行控制寄存器SCON
SCON是80C51的一个可位寻址的专用寄存器,用于串行数据通信的控制。单元地址98H,位地址9FH-98H。寄存器及位地址表示如下:
位址址<?XML:NAMESPACE PREFIX = O /> |
9F |
9E |
9D |
9C |
9B |
9A |
99 |
98 |
位符号 |
SM0 |
SM1 |
SM2 |
REN |
TB8 |
RB8 |
TI |
RI |
①SM0 SM1--- 串行口工作方式选择位
串口4种工作方式不同之处在于其通信协议不同,即帧格式与波特率的不同。4种工作方式与其对应的帧格式与波特率如下:
其中,SMOD为电源控制寄存器PCON 的最高位,f为系统主频,T1溢出率的概念在后文中介绍。
②SM2--- 多机通信控制位
在进行多机通信时,需要用SM2控制从机是准备接收地址还是接收数据。当串行口以方式2或方式3接收时,若SM2=1,则只有当接收到的第九位数据(RB8)为1,才将接收到的前8位地址送入SBUF,并置位RI产生中断请求;否则,将接收到的8位地址丢弃。而当SM2=0时,则不论第九位数据为0还是为1,都将前8位数据装入SBUF中,并产生中断请求。在方式0,1时,SM2必须为0。
③REN--- 允许接收位
REN位用于对串行数据的接收进行控制:
REN=0 禁止接收
REN=1 允许接收
该位由软件置位或复位。
④TB8 --- 发送数据的第9位
在方式2和方式3时,TB8是发送的第9位数据。在多机通信中,以TB8位的状态表示主机发送的是地址还是数据;TB8=0为数据,TB8=1为地址。该位由软件置位或复位。
⑤RB8--- 接收数据位的第9位数据
在方式2或方式3时,RB8存放接收到的第9位数据,代表着接收的某种特征,故应根据其状态对接收数据进行操作。
⑥TI --- 发送中断标志
当方式0时,发送完第8位数据后,该位由硬件置位。在其它方式下,于发送停止位之前,由硬件置位。因此TI=1,表示帧发送结束,其状态既可供软件查询使用,也可请求中断。TI位由软件清0。
⑦RI --- 接收中断标志
当方式0时,接收完第8位数据后,该位由硬件置位。在其它方式下,当接收到停止位时,该位由硬件置位。因此RI=1,表示帧接收结束。其状态既可供软件查询使用,也可以请求中断。RI位由软件清0。
(2)电源控制寄存器PCON
PCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器。单元地址为87H。其内容如下:
在HMOS的单片机中,该寄存器中除最高位之外,其它位都是虚设的。最高位(SMOD)是串行口波特率的倍增位,当SMOD=1时串行口波特率加倍。系统复位时,SMOD=0。PCON寄存器不能进行位寻址,因此表中写了“位序”而不是“位地址”。