资源描述:
《片机原理及应用多机通信》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、单片机原理及应用北京化工大学信息科学与技术学院主讲教师:林伟国E-mail:linwg@mail.buct.edu,cn多机通信MCS-51系列单片机的串行通讯方式2和方式3是有多机通讯功能,可构成多种分布式通讯系统。一个全双工主从方式多机通讯系统的原理框图如下:TXDRXD主机0#机1#机N#机理论上来说,一台主机可以接256台从机。但实际上做不到,因为其受限于串口的驱动能力。而且,上述这种接法其通讯距离<=1m。、为了实现远距离通信,也为了增加驱动能力(带负载能力),一般采用RS-485总线进行串行通讯,这时要变成半双工通讯。不同的RS-485总线驱动芯
2、片的带负载能力不同,有的可以带32个从机,也有的可以带64个从机,带128个从机等等。上图中,主机可以与任何一台从机实现通讯,从机之间的通讯必须通过主机转发。多机通讯的基本原理在多机通讯系统中,为了保证主机与从机之间能可靠通讯,串行通讯必须是具备识别能力的。在MCS-51单片机中,其串行通讯控制寄存器SCON中设有多机通讯选择位SM2。当主机的SM2无要求时,SM0、SM1=10或11时,其工作于方式2或方式3,即多机通讯方式。主机通过对TB8的设置以区别发送的是地址帧(TB8=1)还是数据帧(TB8=0)。多机通讯的基本原理从机对接收到的RB8进行识别:当
3、从机的SM2=1时,如果接收到的RB8=1,则确认为呼叫地址帧,将该帧内容装入SBUF中,并置位RI,向CPU请求中断,进行地址比较。如果RB8=0则为数据帧,将不予以理睬,接收的信息被丢弃。当从机的SM2=0时,则无论是地址帧还是数据帧均接手,并置位RI=1,向CPU请求中断,将该帧内容装入SBUF中。多机通讯的过程1、置全部从机的SM2=1,处于只接收地址帧的状态;2、主机首先发送呼叫地址帧信息,将其中的TB8设置为1,以表示发送的是呼叫地址帧;3、所有从机接收到呼叫地址帧后,各自将接收到的主机呼叫的地址帧与自身的地址相比较;若比较结果相等,则为需要寻址
4、的从机,清除SM2,准备接收主机发送的数据帧,直到全部的数据传输完毕;多机通讯的过程4、若比较不相等,则为非寻址的从机,仍然维持SM2=1不变,对其后发送过来的数据不予以理睬,即接收到的数据帧内容不装入SUBF中,不置位RI=0,不会产生中断请求指导正确的寻址为止。5、主机发送完呼叫地址帧之后,即?发送一连串数据帧,其中的TB8=0,以示为数据帧。6、当主机寻呼其他从机时,通过分析得知在寻呼其他从机后,维持其SM2=1,对其后主机发送的数据不予以理睬。多机通讯协议1、主从多机通讯系统,允许配置255台从机,各从机的地址00H~FEH.2、约定地址FFH为全部
5、从机的控制命令,命令各从机恢复SM2=1状态,准备接收主机的地址呼叫。3、主机和从机的联络过程约定:主机首先发送地址呼叫帧,被寻址的从机回送本机地址给主机,经验证地址相等后再向被寻址的从机发送命令字,被寻址的从机根据命令字要求回送本机数据及状态多机通讯协议4、约定主机发送的命令字为:01H:要求从机发送数据块其他:非法命令5、从机的数据格式约定:D7D6D5D4D3D2D1D0ERRCON1CON20XXXX定义:若ERR=1,从机接收到非法命令,0为正常若CON1=1,从机状态1异常,0为正常若CON2=1,从机状态2异常,0为正常D7D6D5D4D3D2
6、D1D0Xxxxxxxx高4位数据主机程序:呼叫从机号在60H中数据块首地址为30H波特率为2400H禁止串口中断FLAGBIT00HSLADDBYTE60HORG0000HAJMPMAINORG0030HMAIN:MOVSP,#70HMOVTMOD,#20H;T1方式2,8位自动重装载MOVPCON,#80HMOVSCON,#D8H;SM0SM1SM2RENTB8RB8TIRI;11011000;SM2对主机没有要求MOVTH1,#0F3HMOVTL1,#0F3H;波特率为2400HCLRFLAGSETBTR1NEXTLP:MOVR0,#30HMOVR6,
7、#10HLOOP:MOVR7,#02HCALLAddRJBCFLAG,NEXTSCALLRDDATAAJMPNEXTANEXTS:INCR0INCR0NEXTA:INCSLADDDJNZR6,LOOPAJMPNEXTLPADDR:MOVA,SLADD;取从机号MOVSBUF,A;发送从机号JNBTI,$;等待发送结束CLRTI;清TI标志JNBRI,$;等待从机回答本机地址CLRRI;清RI标志MOVA,SUBF;读取从机回答地址CJNEA,SLADD,RETN;地址不符,返回CLRTB8;地址相等,清TB8准备发送命令RETRETN:SETBFLAGRET
8、RDDATA:MOVA,#01HMOVSBUF,AJ