⒊串行数据寄存器SBUF? 包含在物理上是隔离的两个8位寄存器:发送数据寄存器和接收数据寄存器,它们共用一个地址——99H。其格式如下:读SBUF(MOV A,SBUF),访问接收数据寄存器;写SBUF(MOVSBUF,A),访问发送数据寄存器。D7D6D5D4D3D2D1D0SD7SD6SD5SD4SD3SD2SD1SD04.3MCS-51串行口及串行通信技术串行通信基本知识单片机串行口的结构及其工作原理单片机串行口的四种工作方式多机通讯串行口的编程实例串行口的四种工作方式在串行口控制寄存器SCON中,SM0和SM1位决定串行口的工作方式。80C51串行口共有四种工作方式。可有8位、10位或11位帧格式。方式0以8位数据为一帧,不设起始位和停止位,先发送或接收最低位。其帧格式如下:方式1以10位为一帧传输,设有1个起始位(0),8个数据位和1个停止位(1)。其帧格式为:方式2和方式3以11位为1帧传输,设有1个起始位(0),8个数据位,1个附加第9位和1个停止位(1)。其帧格式为:附加第9位(D8)由软件置1或清0。发送时在TB8中,接收时送RB8中。1)串行口方式0—同步移位寄存器方式当SM0=0、SM1=0时,串行口选择方式0。这种工作方式实质上是一种同步移位寄存器方式。数据传输波特率固定为(1/12)fosc由RXD(P3.0)引脚输入或输出数据由TXD(P3.1)引脚输出同步移位时钟接收/发送的是8位数据,传输时低位在前a、输出用串行口工作方式0扩展的并行输出电路如下图所示:当一个数据写入SBUF后,串行数据将由RxD逐位移出;TxD输出移位时钟,频率=fosc1/12;时序如下图所示:注意:每送出8位数据TI就自动置1,再次发送前需要用软件清零TI。b、输入用串行口工作方式0扩展的并行输入电路如下图所示:串行数据由RxD逐位移入SBUF中,串行数据将由RxD逐位移入;TxD输出移位时钟,频率=fosc1/12;时序如下图所示:2)串行口方式1----8位UART当SM0=0、SM1=l时,串行口选择方式1。数据传输波特率由T1的溢出决定,可用程序设定。由TXD(P3.1)引脚发送数据。由RXD(P3.0)引脚接收数据。发送或接收一帧信息为10位:1位起始位(0)、8位数据位(低位在前)和l位停止位(1)。在接收时,停止位进入SCON的RB8串行口方式1的发送和接收时序如下图所示a、输出串行口以方式1发送数据时,数据位由TXD端输出,发送一帧信息为10位,其中1位起始位,8位数据位(先低位后高位),1位停止位。CPU执行1条写入发送缓冲器的指令后,就会启动发送器发送,发送完数据后,置中断标志TI为1。时序如下图所示:b、输入用软件置REN为1时,接收器以所选择波特率的16倍速率采样RXD引脚电平,检测到RXD引脚输入电平发生负跳变时,则说明起始位有效,将其移入输入移位寄存器,并开始接收这一帧信息的其余位。接收过程中,数据从输入移位寄存器右边移入,起始位移至输入移位寄存器最左边时,控制电路进行最后一次移位。当RI=0,且SM2=0(或接收到的停止位为1)时,将接收到的9位数据的前8位数据装入接收SBUF,第9位(停止位)进入RB8,并置RI=1,向CPU请求中断。时序如下图所示:3)串行口方式2和3—9位UART当SM0=1、SM1=0时,串行口选择方式2;当SM1=1、SM0=1时,串行口选择方式3。由TXD(P3.l)引脚发送数据。由RXD(P3.0)引脚接收数据。发送或接收一帧信息为11位:1位起始位(0)、8位数据位(低位在前)、1位可编程位和1位停止位(l)发送时可编程位TB8可设置为1或0,接收时可编程位进入SCON寄存器的RB8位。方式2的波特率是固定的,为振荡器频率的1/32或1/64。方式3的波特率则由T1的溢出决定,可用程序设定。a、输出发送开始时,先把起始位0输出到TXD引脚,然后发送移位寄存器的输出位(D0)到TXD引脚。每一个移位脉冲都使输出移位寄存器的各位右移一位,并由TXD引脚输出。当发送完1帧数据时置TI=1,向CPU请求中断。在发送下1帧数据之前,必须将TI清0。时序如下图所示:b、输入接收时,数据从右边移入输入移位寄存器,在起始位0移到最左边时,控制电路进行最后一次移位。当RI=0,且SM2=0(或接收到的第9位数据为1)时,接收到的数据装入接收缓冲器