本文章主要探讨51单片机的串行通信原理及其四种不同的工作模式,并进行详细的分析和比较。
方式0是外接串行移位寄存器的方式,在这种方式下,数据通过RXD端口串行输入或输出,TXD端口则用于输出移位脉冲以控制外部的移位寄存器进行移动操作。波特率固定为fosc/12(即每完成一个机器周期时,TXD会发出一个移位脉冲,在同一时间内RXD接收一位数据)。每当发送或接收完一个字节后,硬件会设置TI=1或者RI=1并向CPU申请中断处理,但需要通过软件清除这些标志位。实际应用中这种方式常用于串行I/O口与并行I/O口之间的转换。
方式1是一种点对点通信模式,在这种模式下使用的是8位异步串行通信接口,TXD端为发送端而RXD端则作为接收端。每一帧数据由10个比特组成:包括一个起始位、八位数据(低至高位排列)以及结束时的一个停止位。波特率则是通过T1或T2的溢出速率来决定的。当一整帧的数据被发送或者接收到后,硬件会将TI设置为1或是RI置为1,并向CPU请求中断处理;但同样地,必须使用软件清除这些标志位才能继续进行下一帧数据的操作。
(发送过程):执行一条写SBUF指令时,启动了串行口的发送操作,并且同时将值“1”加载到输出移位寄存器的第9个位置。在开始发送起始比特之后,在每个脉冲的作用下,输出移位寄存器会向右移动一位,左边则填充0。当数据最高位被传输出去时,原先设置于第9位上的值“1”左侧全部为零,检测电路识别到此条件后促使控制单元执行最后一次的移位动作,并使/SEND和DATA无效化以发送停止比特;一帧数据至此完成并准备进行下一轮的数据处理。