




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机原理及应用,北京化工大学信息科学与技术学院主讲教师:林伟国E-mail: ,cn,多机通信,MCS-51系列单片机的串行通讯方式2和方式3是有多机通讯功能,可构成多种分布式通讯系统。一个全双工主从方式多机通讯系统的原理框图如下:,TXD RXD 主机,0#机,1#机,N#机,理论上来说,一台主机可以接256台从机。但实际上做不到,因为其受限于串口的驱动能力。而且,上述这种接法其通讯距离=1m。、为了实现远距离通信,也为了增加驱动能力(带负载能力),一般采用RS-485总线进行串行通讯,这时要变成半双工通讯。不同的RS-485总线驱动芯片的带负载能力不同,有的可以带32个从机,也有的可以带64个从机,带128个从机等等。上图中,主机可以与任何一台从机实现通讯,从机之间的通讯必须通过主机转发。,多机通讯的基本原理,在多机通讯系统中,为了保证主机与从机之间能可靠通讯,串行通讯必须是具备识别能力的。在MCS-51单片机中,其串行通讯控制寄存器SCON中设有多机通讯选择位SM2。当主机的SM2无要求时,SM0、SM1=10或11时,其工作于方式2或方式3,即多机通讯方式。主机通过对TB8的设置以区别发送的是地址帧(TB8=1)还是数据帧(TB8=0)。,多机通讯的基本原理,从机对接收到的RB8进行识别:当从机的SM2=1时,如果接收到的RB8=1,则确认为呼叫地址帧,将该帧内容装入SBUF中,并置位RI,向CPU请求中断,进行地址比较。如果RB8=0则为数据帧,将不予以理睬,接收的信息被丢弃。当从机的SM2=0时,则无论是地址帧还是数据帧均接收,并置位RI=1,向CPU请求中断,将该帧内容装入SBUF中。,多机通讯的过程,1、置全部从机的SM2=1,处于只接收地址帧的状态;2、主机首先发送呼叫地址帧信息,将其中的TB8设置为1,以表示发送的是呼叫地址帧;3、所有从机接收到呼叫地址帧后,各自将接收到的主机呼叫的地址帧与自身的地址相比较;若比较结果相等,则为需要寻址的从机,清除SM2,准备接收主机发送的数据帧,直到全部的数据传输完毕;,多机通讯的过程,4、若比较不相等,则为非寻址的从机,仍然维持SM2=1不变,对其后发送过来的数据不予以理睬,即接收到的数据帧内容不装入SUBF中,不置位RI=0,不会产生中断请求直到正确的寻址为止。5、主机发送完呼叫地址帧之后 ,即发送一连串数据帧,其中的TB8=0,以示为数据帧。6、当主机寻呼其他从机时,通过分析得知在寻呼其他从机后,维持其SM2=1,对其后主机发送的数据不予以理睬。,多机通讯协议,1、主从多机通讯系统,允许配置255台从机,各从机的地址00HFEH.2、约定地址FFH为全部从机的广播控制命令,命令各从机恢复SM2=1状态,准备接收主机的地址呼叫。3、主机和从机的联络过程约定:主机首先发送地址呼叫帧,被寻址的从机回送本机地址给主机,经验证地址相等后再向被寻址的从机发送命令字,被寻址的从机根据命令字要求回送本机数据或状态,多机通讯协议,4、约定主机发送的命令字为:01H:要求从机发送数据块其他:非法命令5、从机的数据格式约定:D7 D6 D5 D4 D3D2 D1 D0ERR CON1 CON2 0 X X X X 定义: 若ERR=1, 从机接收到非法命令,0为正常 若CON1=1,从机状态,1异常,0为正常 若CON2 =1,从机状态,2异常,0为正常D7 D6 D5 D4D3D2 D1 D0X x x x x x x x,高4位数据,主机程序:,呼叫从机号在60H中数据块首地址为30H波特率为2400H禁止串口中断 FLAG BIT 00H SLADD BYTE 60HORG 0000HAJMP MAIN,ORG 0030HMAIN: MOV SP,#70H MOV TMOD,#20H;T1 方式2,8位自动 重装载 MOV PCON,#80H MOV SCON,#0D8H; SM0 SM1 SM2 REN TB8 RB8 TI RI; 1 1 0 1 1 0 0 0; SM2对主机没有要求 MOV TH1,#0F3H MOV TL1,#0F3H;波特率为2400H CLR FLAG ;地址不符,FLAG置1 SETB TR1,NEXTLP: MOV R0,#30H;数据存储的起始地址 MOV R6,#10H;从机个数LOOP: MOV R7,#02H;每次回答的字节数 CALL ADDR; JBC FLAG,NEXTS;地址不符,FLAG置1 CALL RDDATA; AJMP NEXTANEXTS: INC R0 INC R0NEXTA: INC SLADD DJNZ R6,LOOP AJMP NEXTLP,ADDR:MOV A,SLADD;取从机号MOV SBUF,A;发送从机号JNBTI,$;等待发送结束CLR TI;清TI标志JNB RI,$;等待从机回答本机地址CLR RI;清RI标志MOV A,SUBF;读取从机回答地址CJNE A,SLADD,RETN;地址不符,返回CLR TB8;地址相等,清TB8 准备发送命令RETRETN: SETB FLAG ;地址不符,FLAG置1 RET,RDDATA: MOV A,#01H;要求从机发送数据块 MOV SBUF,A JNB TI,$ CLR TIRPT: JNB RI,$;等待回送从机状态 CLR RI MOV A,SUBF MOV R0,A INC R0 DJNZ R7,RPT RET,从机程序:,本机地址在4FH中;接收到数据为#01H,表示要向主机发送数据;数据保存在31H,32H单元中 SM0 SM1 SM2REN TB8 RB8 TI RI; 1 1 1 1 0 0 0 0FLAG BIT 00H;FALGAD BIT 01H;ORG 0000HAJMP MAINORG 0023HAJMP COMORG 0030H,MAIN: MOV SP,#70H MOV TMOD,#20H;T1 方式2,8位自动重装载 MOV TH1,#0F3H MOV TL1,#0F3H ;波特率为2400H MOV PCON,#80H MOV SCON,#0F8H SETB TR1 SETB ES;采用中断方式接收主机呼叫SETB EACLR FLAG;FLAG=1,表示收到”01H”命令 SETB FLAGAD;初始值为1,接收地址呼叫RPT:JNB FLAG, RPT CLR FLAG CALL TDATA SETB SM2AJMP RPT,COM:CLR ES;禁止中断 JNB FLAGAD,COMDCLR RIMOV A,SBUFCJNE A,4FH,EXIT1MOV SBUF,A;回送地址JNB TI,$CLR TICLR SM2;准备接受命令和数据 CLR FLAGADEXIT1:SETB ESRETI,COMD: CLR RI MOV A,SBUF CJNE A,#01H,EXIT2 SETB FLAG SETB ES RETIEXIT2: CJNE A,#0FFH,EXIT3 SETB SM2 SETB FLAGADEXIT3: SETB ES RETI,TDATA: MOV A,31H MOV SBUF,A JNB TI,$ CLR TI MOV A,32H MOV SBUF,A JNB TI,$ CLR TI RET,基于RS-485通信的数据采集控制分站的程序设计,系统以10ms采样周期采样锅炉中水的温度;高,低液位开关正常时输出高电平,超出设定液位时输出低电平,分别连接外部中断0和1;系统异常时输出低电平,控制光藕继电器输出报警信号;水位的控制通过输出-20mA控制阀门开度调节水流量水温及液位状态通过RS-485总线上传给监控机数据采样采用位A/D,从机程序设计,本机地址在4FH中接收到数据为#01H,表示要向主机发送数据;采样结果数据保存在31H,32H单元中 数据格式:液位高液位低X X X X(状态)(状态)数据高位 X X X X X X X X 数据低等位,FLAGE0 BIT 00H;液位低报警标志FALGE1 BIT 01H;液位高报警标志FLAGT0 BIT 02H;定时时间到标志,采样控制输出FLAGS0 BIT 03H;串行口接收到“01H”命令标志FLAGAD BIT 04HORG 0000HAJMP INIT ORG 0003H AJMP EINT0 ORG 000BH AJMP T0INT ORG 0013H AJMP EINT1ORG 0023HAJMP COMORG 0030H,INIT: MOV SP, #70H MOV TMOD, #XXH MOV TH0, #XXH MOV TL0, #XXH MOV TH1, #0F3H MOV TL1, #0F3H MOV PCON, #80H MOV SCON, #0F8H SETB IT0 SETB IT1 SETB TR0 SETB TR1,SETB PX1 SETB ES SETB EX0 SETB EX1 SETB ET0 SETB EA CLR FLAGE0 CLR FLAGE1; CLR FLAGT0; CLR FLAGS0; SETB FLAGADDR,MAIN:JBC FLAGE0, E0FUN;液位低报警 JBC FLAGE1, E1FUN;液位高报警 JBC FLAGT0, T0FUN;采样控制输出 JBC FLAGS0, S0FUN;接收串行数据AJMP MAINE0FUN: CLR ALARMLOW ORL 31H,#01000000B AJMP MAINE1FUN: CLR ALARMHIGH ORL 31H,#10000000B AJMP MAIN,T0FUN: CALL ADFUN CALL OUTFUN AJMP MAINS0FUN: CALL TDATA SETB SM2 AJMP MAINEINT0: SETB FLAGE0; RETIEINT1: SETB FALGE1; RETIT0INT: MOV TH0,#XXH MOV TL0,#XXH SETB FLAGT0 RETI,COM:CLR ES;禁止中断 JNB FLAGADR,COMDCLR RIMOV A,SBUFCJNE A,4FH,EXIT1MOV SBUF,A;回送地址JNB TI,$CLR TICLR SM2;准备接受命令和数据 CLR FLAGADREXIT1:SETB ESRETI,COMD: CLR RI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论