7.2.1 串行口结构

7.2.1 串行口结构

MCS-51单片机有一个可编程的全双工串行通信接口,可作为通用异步接收/发送器,也可作为同步移位寄存器。它的帧格式有8位、10位和11位,可以设置为固定波特率和可变波特率。

MCS-51单片机串行口内部结构如图7-4所示。串行口中有两个缓冲器SBUF:一个是发送缓冲器;另一个是接收缓冲器。这两个缓冲器在物理结构上是完全独立的,它们都是字节寻址的寄存器,字节地址均为99H。重叠的地址靠读/写指令区分:串行发送时,CPU向SBUF写入数据,此时99H表示发送SBUF;串行接收时,CPU从SBUF读出数据,此时99H表示接收SBUF。

串行发送与接收的速率与移位时钟同步,定时器/计数器T1作为串行通信的波特率发生器,定时器/计数器T1溢出率经2分频(或不分频)又经16分频作为串行发送或接收的移位时钟。移位时钟的速率即波特率。

接收器是双缓冲结构。由于在前一个字节从接收缓冲器读出之前,接收器就开始接收第二字节(串行输入至移位寄存器),所以若在第二字节接收完毕时前一字节未被读走,就会丢失前一字节的内容。

串行口的发送和接收都是以SBUF的名称进行读或写的,当向SBUF发送“写”命令(MOV SBUF,A)时,即是向发送缓冲器装载并开始由TXD引脚向外发送一帧数据,发送完后便使发送中断标志TI=1;在串行口接收中断标志RI(SCON.0)=0的条件下,置允许接收位REN(SCON.4)=1,这会启动接收过程,一帧数据进入输入移位寄存器,并装载到接收缓冲器中,同时使RI=1。执行读SBUF的命令(MOVA,SBUF)时,则可以由接收缓冲器取出信息并通过内部总线送入CPU。

对于发送缓冲器,因为发送时CPU是主动的,所以不会产生重叠错误。

图7-4 串行口的内部结构