首页 理论教育51单片机串行通信工作方式实战教程

51单片机串行通信工作方式实战教程

【摘要】:8051单片机全双工串行口具有4种工作方式,可通过软件编程选择。方式1为波特率可变的10位异步通信接口方式。在串行口由硬件自动加入起始位和停止位,构成一个完整的帧格式,在移位脉冲作用下串行数据从TXD引脚输出。发送和接收的一帧信息为11位,即1个起始位,9个数据位和1个停止位。发送一帧信息后,置位中断标志TI,其过程与方式1相同。方式3为波特率可变的11位UART方式。

8051单片机全双工串行口具有4种工作方式,可通过软件编程选择。

(1)方式0为移位寄存器输入/输出方式。可外接移位寄存器扩展I/O口,也可以外接同步输入/输出设备。其数据传输波特率固定为fosc/12,8位串行数据由RXD(P3.0引脚)输入或输出,同步移位时钟由TXD(P3.1引脚)输出。

串行数据发送:CPU将数据写入发送寄存器时,立即启动发送,内部定时保证写入SBUF与激活发送之间有一个完整的机器周期,将8位数据以fos/12的固定波特率从RXD输出,低位在前,高位在后。发送完一帧数据后,发送中断标志TI由硬件置位。

串行数据接收:当REN=1且接收中断标志RI位清除时,启动接收过程。当(RI)=0和(REN)=1同时满足时,开始接收。当接收到第8位数据时,将数据移入接收寄存器,并由硬件置位RI。

(2)方式1为波特率可变的10位异步通信接口方式。其传输波特率由定时/计数器1的计数溢出率来决定,波特率=2SMOD×(定时器1溢出率)/32,发送或接收一帧信息为10位,包括1个起始位0,8个数据位和1个停止位1。

串行数据发送:当执行任何一条写SBUF的指令时,启动串行数据发送。在串行口由硬件自动加入起始位和停止位,构成一个完整的帧格式,在移位脉冲作用下串行数据从TXD引脚输出。发送完一帧数据后TXD一直维持在“1”状态下,由硬件置位TI通知CPU可以发送下一个字符。(www.chuimin.cn)

数据接收:当REN=1且RI位清除后,串行口采样RXD引脚,若在RXD引脚上监测到一个1~0的跳变,立即启动一次接收过程。只有当RI=0且停止位为1或者SM2=0时,停止位进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;否则信息丢失。所以在方式1接收时,应先用软件清零RI和SM2标志。

(3)方式2为固定波特率的11位UART方式。波特率由PCON中的选择位SMOD来决定,当SMOD=1时,传输波特率为fosc/32,当SMOD=0时,传输波特率为fosc/64。发送和接收的一帧信息为11位,即1个起始位,9个数据位和1个停止位。发送时可编程位TB8可赋值0或者1,接收时可编程位进入SCON中的RB8。

数据发送:发送的串行数据由TXD端输出一帧信息为11位,附加的第9位来自SCON寄存器的TB8位,用软件置位或复位。准备好第9个数据位之后,当CPU执行一条数据写入SUBF的指令时,就启动发送器发送。发送一帧信息后,置位中断标志TI,其过程与方式1相同。

数据接收:方式2的接收过程也与方式1基本相同,不同之处在于第9个数据位,串行口把收到的8位数据送入SBUF,把收到的第9位数据送入RB8。

(4)方式3为波特率可变的11位UART方式。除波特率外,其余与方式2相同。