11.1 方式0应用
在第6章中,已经对51单片机的串行口结构做过详细介绍,并且通过实例讲解了串行口的4种工作方式中方式1的具体用法,本节详细讲述串行口方式0的用法。
串行口方式0被称为同步移位寄存器的输入/输出方式,主要用于扩展并行输入或输出口。数据由 RXD(P3.0)引脚输入或输出,同步移位脉冲由TXD(P3.1)引脚输出。发送和接收均为8位数据,低位在先,高位在后,波特率固定为fosc/12。在该模式下,串行口的SBUF是作为同步移位寄存器使用的。在串行口发送时,SBUF相当于一个并行进入、串行输出的移位寄存器,由单片机的内部总线并行接收8位数据,并从RXD信号线串行输出。在接收操作时,它又相当于一个串行输入、并行输出的移位寄存器。该模式下,SM2,RB8,TB8不起作用。其数据输出时序图如下图所示,数据输入时序图如下下图所示。
发送操作在 TI=0 时进行,CPU将数据移入SBUF之后,RXD线上即可发出8位数据,TXD上发送同步脉冲。8位数据发送完后,TI由硬件置位,并在中断允许的情况下向CPU申请中断。CPU 响应中断后,先用软件使TI清0,然后再给SBUF 送下一个需要发送的字符如此重复上面的过程。
接收过程是在 REN=1和 RI=0 的条件下启动的。此时,串行数据由 RXD 线输入,TXD线输出同步脉冲。接收电路接收到8位数据后,RI自动置位并在中断允许的条件下向CPU发出中断请求。CPU查询到RI为1或者响应中断以后便将SBUF 中的数据送到累加器。RI需要由软件复位。
需要注意,串行口工作模式0并不是一个同步串口通信方式,它的主要用途是与外面的同步移位寄存器相连,以达到扩展单片机输入并行口和输出并行口的目的,其典型应用图如下图所示。
74LS164 是一个8位串行输入、并行输出的移位寄存器,CLR用来清0,A、B 两个输入端,可使用任一个作为输入端,也可两个同时作为输入端,单片机的RXD 引脚将数据送至 A、B端,然后在CLK同步时钟脉冲作用下,8位串行数据全部移至8位并行口上。
74LS165 是一个8位并行输入、串行输出的移位寄存器,上图中Q为串行输出端,S/L端为启动移位信号端,一个低脉冲可启动移位操作。
示例