微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 51手记之标准51(四)

51手记之标准51(四)

时间:11-10 来源:互联网 点击:

XD端从1到0的跳变时就启动检测器,采用三中取二的原则,接收的值是3次连续采样(第7、8、9个脉冲时采样)取其中两次相同的值,以确认是否是真正的起始位(负跳变)的开始。

当一帧数据接收完毕以后,必须同时满足以下两个条件,这次接收才真正完成。

a.RI=0,即上一帧数据接收完成时,RI=1发出的中断请求已被响应,SBUF中的数据已被取走,说明“接收SBUF”已空。

b.SM2=0或收到的停止位=1(方式1时,停止位已进入RB8),则收到的数据装入SBUF和RB8(RB8装入停止位),且置“1”中断标志RI。

若这两个条件不同时满足,收到的数据不能装入SBUF,该帧数据将丢失。

方式1波特率=(2SMOD/32)×定时器T1的溢出率=(2SMOD/32)/(256-TL1)

3)方式2

9位异步通信接口。每帧数据均为11位,1位起始位0,8位数据位(先低位),1位可程控的第9位数据和1位停止位。

方式2波特率=(2SMOD/64)×fosc

①发送

发送前,先根据通讯协议由软件设置TB8(例如,双机通讯时的奇偶校验位或多机通讯时的地址/数据的标志位)。

②接收

REN=1。数据由RXD端输入,接收11位信息。当位检测逻辑采样到RXD引脚从1到0的负跳变,并判断起始位有效后,便开始接收一帧信息。在接收器完第9位数据后,需满足以下两个条件,才能将接收到的数据送入SBUF。

a.RI=0,意味着接收缓冲器为空。

b.SM2=0或接收到的第9位数据位RB8=1时。

当上述两个条件满足时,接收到的数据送入SBUF(接收缓冲器),第9位数据送入RB8,并置“1”RI。若不满足这两个条件,接收的信息将被丢弃。

4)方式3

方式3为波特率可变的9位异步通讯方式,除波特率外,方式3和方式2相同。

方式3波特率=(2SMOD/32)×定时器T1的溢出率=(2SMOD/32)/(256-TL1)

3.多机通信

串行口用于多机通信时必须使用方式2或方式3。

由单片机构成的多机系统,常采用总线型主从式结构:在多个单片机组成的系统中,只有一个是主机,其余是从机,主机发送的信息可被各从机接收,而各从机发送的信息只有主机接收,从机与从机之间不能互相直接通信。

主机的RXD与所有从机的TXD端相连,TXD与所有从机的RXD端相连。

多机通信的实现,主要靠主、从机正确地设置与判断多机通信控制位SM2和发送、接收的第9位数据(TB8或RB8)。

1)多机通信原理

串行口控制寄存器SCON中的SM2位就是满足这一条件而设置的多机通讯控制位。

在串行口以方式2(或方式3)接收时:

若SM2=1,表示允许多机通讯,这时出现两种可能情况:

①接收到的第9位数据为1时,数据才装入SBUF,并将中断标志RI置“1”,向CPU发出中断请求;

②接收到的第9位数据为0时,则不产生中断标志,信息将抛弃。

若SM2=0,则接收的第9位数据不论是0还是1,都产生RI=1中断标志,接收到的数据装入SBUF中。

当主机给从机发送信息时,要根据发送信息的性质来设置TB8,

发送地址信号时,设置TB8=1,

发送数据或命令时,设置TB8=0。

当从机的SM2为1时,该从机只接收地址帧(RB8位为1),对数据帧(RB8位为0)不予理睬。

而当SM2为0时,该从机接收所有发来的信息。

2)多机通信过程

①令所有从机的SM2位置1,使它们处于只接收地址帧的状态(即从机复位);

②主机发送一帧地址信息,其中包括8位地址,第9位(即TB8)为1,以表示发送的是地址;

③从机接收到地址帧后,各自中断CPU,把接收到的地址与其本机地址作比较;

④地址相符的从机对SM2清0,准备接收主机发来的数据/命令。地址不符的从机仍维持SM=1不变,对主机发来的数据帧不予理睬,直到主机发来新的地址帧;

⑤主机发送数据或控制信息(第9位为0)给被寻址的从机;

⑥被寻址的从机,因SM=0,可以接收主机发送过来的所有数据。当从机接收数据结束时,置位SM2,返回接收地址帧状态(复位状态);

⑦当主机需改为与其他从机通信时,可再发出地址帧来呼叫其他从机。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top