首页 理论教育 单片机应用技术:串行口结构与工作方式

单片机应用技术:串行口结构与工作方式

时间:2023-11-06 理论教育 版权反馈
【摘要】:图6.5串行口内部结构示意简图串行发送与接收数据的速率与移位时钟同步。图6.6串行口控制寄存器SCON的控制字格式SM0和SM1SM0和SM1是串行口工作方式选择位。表6.1串行口的工作方式若SM2=0,不属于多机通信情况,则接收一帧数据后,不管第9位数值是“0”还是“1”,都置EI=1,接收到的数据装入SBUF中。串行口发送中断被响应后,TI不会自动复位,必须由软件清零。

单片机应用技术:串行口结构与工作方式

8051单片机有一个可编程的全双工串行通信接口,它可作UART,也可作同步移位寄存器。其帧格式可有8位、10位或11位,并能设置各种波特率

1)内部结构

8051单片机通过引脚RXD(P3.0,串行数据接收端)和引脚TXD(P3.1,串行数据发送端)与外界进行通信。其内部结构示意图如图6.5所示。图6.5中有两个物理上独立的接收、发送缓冲器SBUF,它们占用同一地址99H,可同时发送、接收数据。发送缓冲器中,数据只能写入,不能读出,接收缓冲器中,数据只能读出、不能写入。

图6.5 串行口内部结构示意简图

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

从图6.5中可看出,接收器是双缓冲结构,在前一个字节被接收缓冲器SBUF读出之前,第二个字节已开始被接收(串行输入移位寄存器)。但是,在第二个字节接收完毕,而前一个字节被CPU读取时,会丢失前一个字节。

串行口的发送和接收都是以特殊功能寄存器SBUF的名义进行读或写的,当向SBUF发送“写”命令时(执行MOV SBUF,A指令),即向发送缓冲器SBUF装载并开始由TXD引脚向外发送一帧数据,之后再发送中断标志位TI=1。

在满足串行口接收中断标志位RI(SCON.0)=0的条件下,置允许接收位REN(SCON.4)=1就会启动接收一帧数据进入输入移位寄存器,并装载到接收SBUF中,同时RI=1。当发送SBUF命令时(MOV A,SBUF指令),即由接收缓冲器(SBUF)取出信息,通过8051内部总线送至CPU。

2)控制寄存器(SCON)98H

8051串行口是可编程接口,对其初始化编程只需用两个控制字分别写入特殊功能寄存器SCON(98H)和电源控制寄存器PCON(87H)中。

8051串行通信的方式选择、数据接收和发送控制以及串行口的状态标志等均由特殊功能寄存器SCON控制和指示,其控制字格式如图6.6所示。

图6.6 串行口控制寄存器SCON的控制字格式

(1)SM0和SM1(SCON.7、6)

SM0和SM1(SCON.7、6)是串行口工作方式选择位。两个选择位对应4种工作方式见表6.1,其中fosc是振荡频率。

(2)SM2(SCON.5)

SM2是多机通信控制位,主要用于方式2和方式3。若置SM2=1,则允许多机通信。多机通信协议规定,第9位数据(D8)为1,说明本帧数据为地址帧;若第9位为0,则本帧为数据帧。当一个8051(主机)与多个8051(从机)通信时,所有从机的SM2位都置为1。主机首先发送的一帧数据为地址,即某从机机号,其中第9位为1,被寻地址的某个从机接收到数据后,将其中第9位装入RB8。从机根据收到的第9位数据(RB8中)的值决定从机可否再接收主机的信息,若(RB8)=0,说明是数据帧,则接收中断标志位RI=0,信息丢失;若(RB8)=1,说明是地址帧,数据装入SBUF并置RI=1,中断所有从机,被寻址的目标从机清除SM2以接收主机发来的一帧数据。其他从机仍然保持SM2=1。

表6.1 串行口的工作方式

若SM2=0,不属于多机通信情况,则接收一帧数据后,不管第9位数值是“0”还是“1”,都置EI=1,接收到的数据装入SBUF中。

根据SM2这个功能,可实现多个8051应用系统的串行通信。

在方式1时,若SM2=1,则只有接收到有效停止位时,EI才置1,以便接收下一帧数据。(www.xing528.com)

在方式0时,SM2必须是0。

(3)REN(SCON.4)

允许接收控制位。由软件置1或清零,只有当REN=1时才允许接收,相当于串行接收的开关;若REN=0,则禁止接收。

在串行通信接收控制程序中,如果满足RI=0,置位REN=1(允许接收)的条件,则启动一次接收过程,一帧数据就装载入接收SBUF中。

(4)TB8(SCON.3)

发送数据的第9位(D8)装入TB8中。在方式2或方式3中,根据发送数据的需要由软件置位或复位。在许多通信协议中可作奇偶校验位,也可在多机通信中作为发送地址帧或数据帧的标志位。若TB8=1,说明发送该帧数据为地址;若TB8=0,说明发送该帧数据为数据字节。在方式0和方式1中,该位未用。

(5)RB8(SCON.2)

接收数据的第9位。在方式2或方式3中,接收到的第9位数据放在RB8位。它是约定的奇/偶校验位,或是约定的地址/数据标识位。在方式2和方式3多机通信中,若SM2=1,RB8=1,说明收到的数据为地址帧。

在方式1中,若SM2=0(即不是多机通信情况),RB8中存入的是已接收到的停止位。

在方式0中,该位未用。

(6)TI(SCON.1)

发送中断标志。在一帧数据发送完时被置位。方式0串行发送到第8位结束时,或其他方式串行发送到停止位的开始时,由硬件置位,可用软件查询。同时也可申请中断,TI置位表示向CPU提供“发送缓中器SBUF已空”的信息,CPU准备发送下一帧数据。串行口发送中断被响应后,TI不会自动复位,必须由软件清零。

(7)RI(SCON.0)

接收中断标志。在接收到一帧有效数据后由硬件置位。在方式0中,第8位数据发送结束时,由硬件置位;在其他3种方式中,在接收到停止位中间时由硬件置位。RI=1,申请中断,表示一帧数据接收结束,并已装入接收SBUF中,要求CPU取走数据。CPU响应中断,取走数据。RI也必须由软件清零,解除中断申请,并准备接收下一帧数据。

串行发送中断标志TI和接收中断标志RI是同一个中断源,CPU不知道是发送中断TI还是接收中断RI产生的中断请求,因此在全双工通信时,必须由软件来判别。

复位时,SCON所有位均清零。

3)电源控制寄存器PCON(87H)

电源控制寄存PCON中只有一位SMOD与串行口工作有关,如图6.7所示。

SMOD(PCON.7)波特率倍增位。串行口工作在方式1、方式2和方式3时,波特率和2SMOD成正比,即当SMOD=1时,波特率提高一倍,复位时,SMOD=0。

图6.7 电源控制寄存器PCON

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈