AT89S51串行口工作方式0

串行口的工作方式0为同步移位寄存器输入/输出方式 。这种方式并不是用于两个AT8 9S51单片机之间的异步串行通信,而是用于串行口外接移位寄存器,以扩展并行I/O口 。
方式0以8位数据为一帧,没有起始位和停止位,先发送或接收最低位 。波特率是固定的,为fosc/12 。方式0的帧格式如下图所示 。
1.方式0发送
(1)方式0发送过程 。
 
方式0发送过程是,当CPU执行一条将数据写入发送缓冲器SBUF的指令时,产生一个正脉冲,串行口开始把SBUF中的8位数据以fosc/12的固定波特率从RXD引脚串行输出,低位在先,TXD引脚输出同步移位脉冲,发送完8位数据,中断标志位TI置1 。方式0发送时序如下图所示 。
 
(2)方式0发送应用举例 。
下图所示为AT89S51利用方式O发送的一个具体应用,通过串行口外接8位串行输入并行输出移位寄存器74LS164,扩展两个8位并行输出口的具体电路 。
 
当串行口被设置在方式0发送状态时,串行数据由P3.0(RXD端)送出,移位脉冲由P3.1(TXD端)送出 。在移位脉冲的作用下,串行口发送缓冲器的数据逐位地从P3.0串行移入74LS164中 。
2.方式0接收
(1)方式0接收过程 。
方式0接收时,REN为串行口允许接收控制位,REN=0,禁止接收;REN=1,允许接收 。
当CPU向串行口的SCON寄存器写入控制字(设置为方式0,并使REN位置1,同时RI=0)时,产生一个正脉冲,串行口开始接收数据 。引脚RXD为数据输入端,TXD为移位脉冲信号输出端,接收器以fsc/12的固定波特率采样RXD引脚的数据信息,当接收器接收完8位数据时,中断标志RI置1,表示一帧数据接收完毕,可进行下一帧数据的接收,时序如下图所示 。
 
(2)方式0接收应用举例 。
下图所示为串行口外接两片8位并行输入串行输出的寄存器74LS165扩展两个8位并行输入口的电路 。
 
当74LS165的S/L(的反)端由高到低跳变时,并行输入端的数据被置人寄存器;当S/L(的反)=1,且时钟禁止端(第15脚)为低电平时,允许TXD(P3.1)串行移位脉冲输入,这时在移位脉冲作用下,数据由右向左方向移动,以串行方式进入串行口的接收缓冲器中 。
在上图中,P3. 1(TXD)作为移位脉冲输出与所有75LS165的移位脉冲输入端CP相连;P3.0(RXD)作为串行数据输入端与74LS165的串行输出端QH相连;P1.0与S/L(的反)相连,用来控制74LS165的串行移位或并行输入;74LS165的时钟禁止端(第15脚)接地,表示允许时钟输入 。当扩展多个8位输入口时,相邻两芯片的首尾(QH与SIN)相连 。
在方式0下,SCON中的TB8、RB8位没有用到,发送或接收完8位数据由硬件使TI或RI中断标志位置1,CPU响应TI或RI中断,在中断服务程序中向发送SBUF中送入下一个要发送的数据或从接收SBUF中把接收到的1B存入内部RAM中 。注意,TI或RI标志位必须由用户软件清0,可采用如下指令:
 
【AT89S51串行口工作方式0】来把TI或RI清0 。方式0时,SM2位(多机通信控制位)必须为0 。

    推荐阅读