51系列单片机串行口分四种工作方式,由串行口控制寄存器SCON中的SMO、SM1二位选择决定。
1.方式0
方式0为移位寄存器方式,数据的接收/发送都通过RXD(P3.0),而TXD(P3.1)用来产生移位脉冲。当RI=0时,软件置位REN后,开始接收。串行口以固定的频率采样RXD,TXD端发出的脉冲使移位寄存器同步移位。当向SBUF发送数据后,立即启动发送。8位数据的收/发都是低位在前,波特率固定为晶振频率的1/12。方式0常用于配合CMOS或TTL移位寄存器进行串/并、并/串的转换。
2.方式1
方式1为10位数据格式:1个起始位(为0),8位数据(低位在前),一个停止位(为1),起始位和停止位都是由硬件产生的,接收时停止位进入RD8。TXD用于发送数据,RXD用于接收数据。方式1用定时器1或定时器2作为波特率发生器,这时相应的定时器中断应关闭。定时器1作为波特率发生器时,波特率计算公式如下:
波特率=(2SMOD/32)×定时器1设置的溢出率式中,SMOD为节电控制寄存器PCON的波特率加倍位,取值为0或1。
定时器作为波特率发生器时,定时器选择工作方式0、1、2均可,一般选择方式2(即8位常数自动重装方式)。波特率计算公式如下:
波特率=(2SMOD/32)×[振荡频率/(12×(256-TH1))](www.xing528.com)
发送数据:任何对SBUF写数据的操作都会启动串行发送,发送完毕中断标志位TI被硬件置1。
接收数据:收到有效的数据起始位后,开始接收数据。接收完毕,若RI=0且SM2=0,或收到有效停止位后,则数据写入SBUF,同时将中断标志位RI置1,否则本次接收的信息被放弃。
3.方式2和方式3
方式2和方式3都是通过TXD和RXD分别进行数据发送和数据接收的,数据为11位:1位起始位(0),8位数据位(低位在前),单独的第9位数据,1位停止位。发送时,应先将第9位数据放入RB8,再执行写SBUF的指令。接收时,第9位数据进入RB8,而停止位丢弃。第9位数据常用于多机通信或奇偶校验。
方式2的波特率是固定的,计算公式如下:
串行方式2的波特率=(2SMOD/64)×振荡频率
方式3的波特率由定时器1或2的溢出率决定,计算公式与方式1相同。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。