AT89S51串行口的方式2和方式3

串行口工作于方式2和方式3时,被定义为9位异步通信接口 。每帧数据均为11位,1位起始位0,8位数据位(先低位),1位可程控为1或0的第9位数据和1位停止位 。方式2、方式3的帧格式如下图所示 。
 
方式2的波特率由下式确定
 
1.方式2发送
【AT89S51串行口的方式2和方式3】发送前,先根据通信协议由软件设置TB8(如双机通信时的奇偶校验位或多机通信时的地址/数据的标志位),然后将要发送的数据写入SBUF,即可启动发送过程 。串行口能自动把TB8取出,并装入到第9位数据位的位置,再逐一发送出去 。发送完毕,则使TI位置1 。
串行口方式2和方式3发送时序如下图所示 。
 
例1:方式2发送在双机串行通信中的应用 。
下面的发送中断服务程序是在双机串行通信中,以TB8作为奇偶校验位,本程序采用偶校验发送 。处理方法为数据写入SBUF之前,先将数据的偶校验位写入TB8(设第2组的工作寄存器区的RO为发送数据区地址指针) 。
 
2.方式2接收
当串行口的SCON寄存器的SMO、SM1两位为10,且REN=1时,允许串行口以方式2接收数据 。接收时,数据由RXD端输入,接收11位信息 。当位检测逻辑采样到RXD引脚从1到O的负跳变,并判断起始位有效后,便开始接收一帧信息 。在接收完第9位数据后,需满足以下两个条件,才能将接收到的数据送入SBUF(接收缓冲器) 。
(1)RI=0,意味着接收缓冲器为空 。
(2)SM2=0或接收到的第9位数据位RB8=1 。
当满足上述两个条件时,接收到的数据送入SBUF(接收缓冲器),第9位数据送入RB8,且RI置1 。若不满足这两个条件,接收的信息将被丢弃 。
串行口方式2和方式3接收时序如下图所示 。
 
例2:方式2接收在双机通信中的应用 。
本例对例1发送的数据进行偶校验接收,程序如下(设1组寄存器区的RO为数据缓冲区指针) 。
方式3
当SM0、SM1两位为11时,串行口被定义工作在方式3 。方式3为波特率可变的9位异步通信方式,除了波特率外,方式3和方式2相同 。
方式3的波特率由下式确定

    推荐阅读