首页 理论教育 单片机串行接口介绍及典型设计案例

单片机串行接口介绍及典型设计案例

时间:2023-10-23 理论教育 版权反馈
【摘要】:单片机的串行接口主要由两个数据缓冲器SBUF、一个输入移位寄存器、一个串行控制寄存器SCON和一个用于波特率发生器的T1等组成。图4-12 单片机串行接口结构特殊功能寄存器SCON用来存放串口的控制和状态信息。串行控制寄存器SCON8051单片机串行通信的方式选择、接收和发送控制以及串口的状态标志等均由特殊功能寄存器SCON控制和指示。PCON格式为串行通信的波特率是由单片机的定时器T1产生,并且串行通信占用一个单片机的一个中断。

单片机串行接口介绍及典型设计案例

MCS-51系列单片机片内有一个可编程的全双工串行接口,串行发送时数据由单片机的TXD(即P3.1)引脚送出,接收时数据由RXD(即P3.0)引脚输入。单片机内部有有两个物理独立缓冲器SBUF,一个为发送缓冲器,另一个为接收缓冲器,两者共用一个SFR地址99H。发送缓冲器只能写入,不能读出,接收缓冲器只能读出,不能写入。其数据帧格式可为8位、10位或11位,并能设置各种波特率,给实际使用带来了很大的灵活性。

1.串行接口的结构

单片机的串行接口是可编程接口,对它的初始化只需对特殊功能寄存器SCON和电源控制寄存器PCON设定即可。8051单片机串行接口的结构如图4-12所示。

单片机的串行接口主要由两个数据缓冲器SBUF、一个输入移位寄存器、一个串行控制寄存器SCON和一个用于波特率发生器的T1等组成。串行接口数据缓冲器SBUF是可以直接寻址的专用寄存器。在物理上,一个作发送缓冲器,一个作接收缓冲器,但两个缓冲器共用一个入口地址(99H),由读/写信号区分。CPU发送数据时,数据写入SBUF,接收数据时读SBUF。接收缓冲器SBUF是双缓冲结构,以避免在接收下一帧数据之前,CPU未能及时响应接收器的中断,把上一帧数据读走,而产生两帧数据重叠的问题而设置的双缓冲。对于发送缓冲器,为了保持最大的传输速率,一般不需要双缓冲,因为发送时CPU是主动的,不会产生写重叠的问题。不管是发送数据或者接收数据,只要SBUF与外界有数据交换就可引发中断请求。

978-7-111-43463-4-Chapter04-56.jpg

图4-12 单片机串行接口结构

特殊功能寄存器SCON用来存放串口的控制和状态信息。T1用做串口的波特率发生器,其波特率是否增倍由特殊功能寄存器PCON的最高位控制。

2.与串行通信有关的寄存器

与串行通信有关的寄存器有串行控制寄存器SCON、电源控制寄存器PCON以及与串行通信中断有关的控制寄存器IE和IP。另外,串行通信的波特率还要用到T1的控制寄存器TMOD和TCON。

(1)串行控制寄存器SCON

8051单片机串行通信的方式选择、接收和发送控制以及串口的状态标志等均由特殊功能寄存器SCON控制和指示。SCON的字节地址是98H,支持位操作。其控制字格式为

978-7-111-43463-4-Chapter04-57.jpg

SM0、SM1:串口的工作方式控制位,工作方式见表4-3,其中fosc是振荡频率。

表4-3 串行接口的工作方式(www.xing528.com)

978-7-111-43463-4-Chapter04-58.jpg

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。若SM2=0,即不属于多机通信的情况,则接收一帧数据后,不管第9位数据是0还是1,都置RI=1,接收到的数据装入SBUF中。在方式1时,若SM2=1,则只有接收到有效的停止时,RI才置1,以便接收下一帧数据。在方式0时,SM2必须是0。

REN:允许接收控制位。由软件置1或清零。只有当REN=1时才允许接收数据。在串行通信接收控制程序中,如满足RI=0,REN=1的条件,就会启动一次接收过程,一帧数据就装入接收缓冲器SBUF中。

TB8:工作在方式2和方式3时,TB8为发送的第9位数据,根据发送数据的需要由软件置位或复位,可作奇偶校验位,也可在多机通信中作为发送地址帧或数据帧的标志位。对于后者,TB8=1时,说明发送该帧数据为地址;TB8=0,说明发送该帧数据为数据字节。在方式0和方式1中,该位未用。

RB8:工作在方式2和方式3时,RB8为接收的第9位数据。SM2=1时,如果RB8=1,说明收到的数据为地址帧。RB8一般是约定的奇偶校验位,或是约定的地址/数据标志位。在方式1中,若SM2=0(即不是多机通信情况),RB8中存放的是已接收到的停止位。方式0中该位未用。

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

RI:接收中断标志,在接收到一帧有效数据后由硬件置位。在方式0中接收到第8位数据时,或其他方式中接收到停止位中间时,由硬件置位,向CPU申请中断,也可用软件查询。RI=1表示一帧数据接收结束,并已装入接收SBUF中,要求CPU取走数据。RI必须由软件清零,以清除中断请求,准备接收下一帧数据。

由于串行发送中断标志TI和接收中断标志RI共用一个中断源,所以CPU并不知道是TI还是RI产生的中断请求。因此,在进行串行通信时,必须在中断服务程序中用指令来判断。复位后SCON的所有位都清零。

(2)电源控制寄存器PCON

PCON中的最高位SMOD是与串口的波特率设置有关的选择位,其余7位都和串行通信无关。SMOD=1时,方式1、2、3的波特率加倍。PCON格式为

978-7-111-43463-4-Chapter04-59.jpg

串行通信的波特率是由单片机的定时器T1产生,并且串行通信占用一个单片机的一个中断。因此串行通信还要用T1以及中断有关的寄存器,如IE、IP、TMOD。在节之前已对中断和定时器应用做了介绍,利用这些寄存器进行串行通信时会在程序中再次体现。

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

我要反馈