单片机学习之串行通信

1.串行通信口的结构

51单片机有一个可编程的全双工串行通信接口,通过它可进行异步通信。其内部结构如图所示:
单片机学习之串行通信
1)两个数据缓冲器SBUF:发送数据缓冲寄存器SBUF和接收数据缓冲寄存器SBUF。前者用来发送串行数据,后者用来接收串行数据。两者物理上是不同的,只是共用一个地址99H。
2)输入移位寄存器:在接收控制器的控制下,将输入的数据位逐位移入接收SBUF。
3)串行控制寄存器SCON:控制串行通信的工作方式,并反映串行通信口的工作状态。
4)定时器T1:作波特率发生器,控制传输数据的速度。

2.串行通信口的控制

与串行通信有关的特殊功能寄存器有4个,分别为SCON、PCON、IE和IP。其中,SCON和PCON直接控制串行口的工作方式。IE、IP已在之前的博客中讲过,在此不再赘述。)

寄存器SCON(既可字节寻址又可位寻址的特殊功能寄存器,字节地址为98H)
9F 9E 9D 9C 9B 9A 99 98
SM0 SM1 SM2 REN TB8 RB8 T1 R1

(1)SM0、SM1:串行口工作方式的选择位,可选择4种工作方式。
单片机学习之串行通信
(2)SM2:多机通信控制位,主要用于方式2或方式3的多机通信情况。SM2=1,允许多机通信;SM2=0,禁止多机通信。(3)REN:允许/禁止数据接收控制位,当REN=1时,允许串行口接收数据;当REN=0时,禁止串行口接收数据。(4)TB8:在方式2或3中,它为要发送数据的第9位。通常用作数据的校验位,也可在多机通信时用作地址帧或数据帧的标志位。(5)RB8:在方式2或3中,它为要接收数据的第9位。在方式1中,若SM2=0,则RB8是接收到的停止位。(6)TI:发送中断标志位。串行口在工作方式0时,发送第8位数据结束时,TI由硬件自动置“1”,向CPU发送中断请求,在CPU响应中断后,必须用软件请0;在其他几种工作方式中,该位在停止位开始发送前自动置“1”,向CPU发送中断请求,在CPU响应中断后,也必须用软件请0。(7)RI:接收中断标志。串行口在工作方式0时,接收完第8位数据时,RI由硬件自动置“1”,向CPU发出中断请求,在CPU响应中断后,必须用软件请0;在其他几种工作方式中,该位在接收到停止位时自动置“1”,向CPU发出中断请求,在CPU响应中断取走数据后,必须用软件对该位清0,以准备接收下一帧数据。
在系统复位时,SCON的所有位均被清0。

电源控制寄存器PCON(不可位寻址,字节地址为87H)

PCON的第7位SMOD与串行口有关,SMOD为波特率选择位。在方式1、方式2和方式3时起作用。若SMOD=0,波特率不变;若SMOD=1,波特率加倍。当系统复位时,SMOD=0。控制字中其余各位与串行口无关。
单片机学习之串行通信