基于MCS_51单片机的串行通信(2)

发布时间:2021-06-08

很有用的

fosc/12。

当SM0=0、SM1=1时,串行口以方式1工作。方式1用于串行发送或接受数据,为10位通用异步接口。其中TXD发送数据,RXD接受数据。一帧数据包括:一个起始位,8位数据位(低位在前),1位停止位。方式1的波特率可变,其波特率为2SMOD/32*T1(或T2)的溢出速率。

当SM0=1、SM1=0时,串行口工作在方式2,为9位异步串行通信。方式2和方式1不同的是,它的数据是9位的,即它的一帧包括11位,1个开始位,9个数据位和1个停止位。其中第9位数据是可以自行编程的,可以用来做奇偶校验,也可以用来作地址数据标志位。当SM0=1、SM1=1时,串行口工作在方式3。方式3和方式2差不多,它们之间的差别在于方式2的波特率是固定的,为fsoc/32(SMOD=1)或fsoc/64(SMOD=0时);方式3的波特率是可以变化的,可以自行通过定时器T1或T2设定。

开始

串口初始化

发送数据块

将要发送数据

N

发送完毕?

发送呼叫信号00

Y

等待回答

接收回答

N

正确?

N

01?

Y

返回

Y

图1双机通信发送子程序流程图

2.2波特率的设置

根据串口通信的几种模式,当采用方式0和方式2时,波

特率只与晶振频率有关,分别为fosc/12和fosc/32(或fosc/

64)。这时的计算非常容易。如采用12MHz的晶振时,在方式0,波特率为1Mb/s,即每秒钟可以传送1M位的数据。在方式2时,当SMOD=0时,则波特率为12/64=0.1875Mb/s;当SMOD=1时,波特率增加一倍,为12/32=0.375Mb/s。

在方式1和方式3时,波特率的计算就不仅是与晶振频率和SMOD位有关,还与定时器T1(或T2)的设置有关。

3

单片机之间的通信协议

3.1

单片机双机通信协议

单片机之间的通信中最简单的一种形式就是双机通信,即

直接连接它们的串口,并且共地就可以实现,但这个方法只适用于距离很近的两机,为增加通信距离,可以用RS-422标准,为了减少干扰,可以采用光电隔离的方法。

通信的软件编程需要一系列的协议,即规定相同的波特率和晶振频率,有了这些协议,就可以通过编程实现通信了。双机通信一般有两种编程方法实现:一种是查询方法,一种是中断方法。以查询方法为例,其发送子程序的流程图如图1所示,接收子程序的流程图如图2所示。

开始

串口初始化接收数据块并缓冲

清接收缓冲

N

接收完毕?

接收呼叫信号

Y

计算检验字并比较

Y

00?

Y

N

正确?

回送00到甲机

返回F0到甲机

回送01到甲机

返回FF到甲机

返回

图2

双机通信接收子程序流程图

3.2单片机多机通信协议

目前广泛运用的各种分布式集散控制系统中,往往要使用

多个单片机作为下位机,采集信号,实行现场控制。这时往往采用一个单片机作为主机,控制整个系统的运行,而采用多个单片机作从机,完成现场信号采集与局部控制功能。

主机和从机通过总线连接。主机TXD端口可以向总线发送信号,这些信号可以被所有的从机接收;而各个从机也可以向总线发送信号,而这些信号只能被主机接收。所以各从机都可以和主机自由通信,但是从机之间的通信必须经过主机。

多机通信时,为了保证通信的可靠性,采用了寻址技术,即主机发送一个地址信息给各个从机,各从机接收到地址信息后,便与自己的地址相比较,若相同,则开始与主机通信;若不同,则不理会主机发送的数据信息,也不向总线发送信息。一轮通信完毕,若主机想换一个从机进行通信,则再次发送地址信息,对从机进行寻址。

多机通信时必须使用方式2和方式3。当使用方式2或方

2010.15

61

基于MCS_51单片机的串行通信(2).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219