19.1.3 双机及多机通信原理
在单片机应用系统中,经常需要进行两个单片机之间以及多个单片机之间的串行数据传输。下面以双机和多机通信为例,介绍其工作原理。
1.双机通信原理
两个单片机之间的通信称为点对点通信。如果两个8051应用系统相距很近,将它们的串行口直接相连,即可实现双机通信。如果想增加通信距离,可以将其转换为RS-232C接口标准来进行传输。
单片机之间的双机串行通信比较简单,双方需要作的工作包括如下几方面。
❑设置相同的波特率。
❑设置相同的传输方式和数据格式。
❑协议上约定好发送方和接收方。
更为详细的内容将在后面以实例的方式讲解。
2.多机通信原理
在单片机多机通信中,由于存在多个单片机。为了保证主机与所选择的从机实现可靠的通信,除了设置相同的波特率以及传输方式外,还必须保证各个通信接口具有识别功能。在串行控制寄存器SCON中的SM2位称为多机串行通信控制位,可用于实行多机串行通信的控制。
在多机串行通信模式中,通信的双方分为主机和从机,而SM2用于控制从机的接收。若SM2=0,则接收到第9位数据无论是1还是0,都产生RI=1的中断标志,接收到的数据装入SBUF。根据这个功能,可实现多MCS-51单片机的串行通信。
在串行口以方式2或3接收时,若SM2=1,表示设置多机通信功能。此时,如果接收到第9位数据为1,数据装入SBUF,并置RI=1,向8051 CPU发出中断请求。如果接收到第9位数据为0,不产生中断,信息将被丢失。
发送前根据通信协议由C51程序设置TB8,然后将要发送的数据写入SBUF,即可启动发送过程,串行口自动把TB8取出当作第9位数据位发送出去。接收时,第9位数据位自动送入SCON的RB8位。