11.1.2 单片机串行接口的内部结构

51系列单片机的全双工串行口主要由数据发送缓冲器、发送控制器TI和接收控制器RI等组成,其结构如图11.4所示。

从图中可以看出,串行接口内部包含有两个互相独立的发送和接收缓冲器,可以在同一时刻进行数据的发送和接收。发送缓冲器只能写入而不能读出数据,而接收缓冲器则只能读出而不能写入数据。因此,两个缓冲器实际共用一个符号SBUF,占用同一个地址99H。在实际使用时,可以通过不同的读缓冲器和写缓冲器指令来区分对哪个缓冲器操作。读缓冲器和写缓冲器的汇编指令分别如下。


MOV SBUF,A//写缓冲器

MOV A,SBUF//读缓冲器


其中,第一个汇编指令对发送缓冲器进行操作,将累加器A中的数据写入发送缓冲器。第二个汇编指令对接收缓冲器进行操作,将接收缓冲器中的数据读取并送入累加器A。

11.1.2 单片机串行接口的内部结构 - 图1

图 11.4 单片机串行口内部结构

而在C51语言中,reg51.h文件包含了对SBUF的声明,示例如下。


sfr SBUF=0x99;


在C51程序设计时,只需对SBUF进行读写即可,示例如下。


SBUF=0x12;//写SBUF

Ch=SBUF;//读SBUF,赋值给变量Ch


单片机的串行接口在串行数据发送的时候,由8051 CPU执行上面的写指令把数据写入发送缓冲器,则串行接口电路便自动启动,从而一位一位地向外传送数据。由于采用了全双工结构,在发送的同时接收端也可以一位一位地接收数据,直到把一组串行数据接收完毕并送入缓冲器,然后自动通知8051 CPU,程序中执行上面的读指令便可以把接收缓冲器中的数据读入。因此,在整个串行数据的发送和接收过程中,8051 CPU的占用时间比较少,便于进行其他操作。

51系列单片机的串行接口有两个特殊功能寄存器SCON和PCON。其中,SCON用于存放串行接口的控制和状态信息,PCON用于改变串行接口的波特率。另外,51系列单片机的串行口共有4种工作模式,对应有3种波特率。其中,模式0和模式2具有固定的波特率;而模式1和模式3的波特率是可变的,一般由定时器T1或T2的溢出率来决定。下面分别介绍各个寄存器及其读写。