7.2.3 串行口的工作方式
在串行口的4种工作方式中,串行通信一般使用方式1、方式2和方式3,方式0主要用于扩展并行输入口或输出口。
1.串行口工作在方式0
工作在方式0时,串行口为同步移位寄存器的输入或输出方式,主要用于扩展并行输入口或输出口。数据由RXD(P3.0)端输入或输出,同步移位脉冲由TXD(P3.1)端输出,发送和接收的是8位数据,低位在先,高位在后。串行口的波特率是固定的,为fosc/12。
(1)串行口用于扩展并行输出口
利用串行口扩展并行输出口的电路如图7-5所示。
图7-5 串行口扩展并行输出口的电路
只要执行一条写入SBUF指令,数据便开始从RXD端串行发送,在同步移位脉冲TXD的作用下,一位一位地移入8位移位寄存器74LS164中。方式0的发送时序如图7-6所示。
图7-6 方式0的发送时序
在写入SBUF信号有效后,相隔一个机器周期,输出移位寄存器的内容逐次送入RXD引脚输出。移位脉冲由TXD引脚输出,它使RXD引脚输出的数据移入外部移位寄存器。当数据的最高位D7移至输出移位寄存器的输出位时,再移位一次就完成了一字节的输出,这时,发送中断标志TI置1,向CPU申请中断。中断响应后,TI不能自动清0,必须用软件清0。
74LS64的CR引脚用于使其数据清0,不使用清0功能时,可以将该引脚上拉成高电平。74LS64的A引脚和B引脚互为选通控制,A引脚为选通控制时,B引脚为输入;B引脚为选通控制时,A引脚为输入,此处将A引脚和B引脚短接,作为74LS64的串行数据输入端。
(2)串行口用于扩展并行输入口
利用串行口扩展为并行输入口的电路如图7-7所示。
图7-7 串行口扩展为并行输入口的电路
在满足REN=1和RI=0的条件下,会启动一次接收过程。此时,RXD为串行输入端,TXD为同步移位脉冲输出端。在同步移位脉冲的作用下,74LS165中的数据一位一位地通过RXD端进入接收缓冲器中。方式0的接收时序如图7-8所示。
图7-8 方式0的接收时序
当接收完一帧数据后,接收中断标志RI置1,向CPU申请中断,表示接收缓冲器已满。中断响应后,RI不能自动清0,必须用软件清0。
74LS165的引脚的负脉冲用于将并行数据装入,该引脚在高电平时就可以启动单片机进行数据输入。
是时钟输入禁止控制引脚,通常将其接地。
2.串行口工作在方式1
串行口工作在方式1时,是10位帧格式异步通信接口。TXD为发送端,RXD为接收端。收发一帧数据的帧格式为1位起始位、8位数据位(低位在前)和1位停止位,如图7-9所示。
图7-9 串行口工作在方式1时的数据帧格式
(1)方式1发送数据
方式1发送数据时,数据由TXD端输出。CPU执行一条写入SBUF的指令后,就启动串行口开始发送数据。发送波特率由内部定时器/计数器T1控制。发送完一帧数据时,发送中断标志TI置1,向CPU申请中断。方式1的发送时序如图7-10所示。
图7-10 方式1的发送时序
(2)方式1接收数据
方式1接收数据时,数据从RXD输入。当接收允许位REN置1后,接收器以16倍波特率的16倍速率采样接收端RXD引脚的电平状态,如果检测到起始位(即在RXD上检测到1至0的跳变),则启动接收器接收,将其移入输入移位寄存器,并开始接收这一帧信息的其余位。接收过程中,数据从输入移位寄存器右边移入,起始位移至输入移位寄存器最左边时,控制电路进行最后一次移位。当RI=0,且SM2=0(或接收到的停止位为1)时,将接收到的9位数据的前8位数据装入接收缓冲器,第9位(停止位)进入RB8,并置RI=1,向CPU请求中断。
方式1的接收时序如图7-11所示。
图7-11 方式1的接收时序
3.串行口工作在方式2和方式3
串行口工作在方式2和方式3时,均为11位异步通信接口,由TXD和RXD发送与接收数据。这两种工作方式除波特率不同外,其他操作完全相同。收发一帧数据的帧格式为1位起始位、8位数据位(低位在前)、1位可编程的第9数据位和1位停止位,如图7-12所示。
图7-12 串行口工作在方式2和方式3时的数据帧格式
发送时,第9数据位(TB8)可以设置为1或0,也可以将奇偶位装入TB8中,进行奇偶校验;接收时,第9位数据进入SCON的RB8中。
(1)方式2和方式3发送数据
CPU向SBUF写入数据时,就启动了串行口的发送过程。SCON中的TB8写入输出移位寄存器的第9位,8位数据装入SBUF。方式2和方式3的发送时序如图7-13所示。
图7-13 方式2和方式3发送时序图
发送开始时,先把起始位0输出到TXD引脚,然后发送移位寄存器的输出位(D0)到TXD引脚。每一个移位脉冲都使输出移位寄存器的各位右移一位,并由TXD引脚输出。第一次移位时,停止位“1”移入输出移位寄存器的第9位上,以后每次移位,左边都移入0。当停止位移至输出位时,左边其余位全为0,检测电路检测到这一条件时,使控制电路进行最后一次移位,并置TI=1,向CPU请求中断。
(2)方式2和方式3接收数据
当RI=0时,软件使接收允许位REN为1后,接收器就以所选频率的16倍速率开始取样RXD引脚的电平状态,当检测到RXD引脚发生负跳变时,说明起始位有效,将其移入输入移位寄存器,开始接收这一帧数据。方式2和方式3的接收时序如图7-14所示。
方式2和方式3接收数据时,应首先使SCON中的REN=1,允许接收。当检测到起始位时,开始接收9位数据。当满足RI=0且SM2=0或接收到的第9位为1时,前8位数据装入SBUF,第9位数据装入SCON中的RB8,并置RI=1,向CPU申请中断;否则,该次接收无效,不将RI置1。
图7-14 方式2和方式3接收时序图