预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共29页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

单片机原理及应用多机通信理论上来说,一台主机可以接256台从机。但实际上做不到,因为其受限于串口的驱动能力。而且,上述这种接法其通讯距离<=1m。、 为了实现远距离通信,也为了增加驱动能力(带负载能力),一般采用RS-485总线进行串行通讯,这时要变成半双工通讯。 不同的RS-485总线驱动芯片的带负载能力不同,有的可以带32个从机,也有的可以带64个从机,带128个从机等等。 上图中,主机可以与任何一台从机实现通讯,从机之间的通讯必须通过主机转发。多机通讯的基本原理多机通讯的基本原理多机通讯的过程多机通讯的过程多机通讯协议多机通讯协议主机程序: ORG0030H MAIN:MOVSP,#70H MOVTMOD,#20H ;T1方式2,8位自动 重装载 MOVPCON,#80H MOVSCON,#D8H ;SM0SM1 SM2 REN TB8 RB8 TIRI ;11011000 ;SM2对主机没有要求 MOVTH1,#0F3H MOVTL1,#0F3H ;波特率为2400H CLRFLAG SETBTR1NEXTLP:MOVR0,#30H MOVR6,#10H LOOP:MOVR7,#02H CALLAddR JBCFLAG,NEXTS CALLRDDATA AJMPNEXTA NEXTS:INCR0 INCR0 NEXTA:INCSLADD DJNZR6,LOOP AJMPNEXTLPADDR: MOVA,SLADD ;取从机号 MOVSBUF,A ;发送从机号 JNB TI,$ ;等待发送结束 CLRTI ;清TI标志 JNBRI,$ ;等待从机回答本机地址 CLRRI ;清RI标志 MOVA,SUBF ;读取从机回答地址 CJNEA,SLADD,RETN;地址不符,返回 CLRTB8 ;地址相等,清TB8准备发送命令 RET RETN:SETBFLAG RETRDDATA:MOVA,#01H MOVSBUF,A JNBTI,$ CLRTI RPT:JNBRI,$ ;等待回送从机状态 CLRRI MOVA,SUBF MOV@R0,A INCR0 DJNZR7,RPT RET从机程序:MAIN:MOVSP,#70H MOVTMOD,#20H ;T1方式2,8位自动重装载 MOVTH1,#0F3H MOVTL1,#0F3H;波特率为2400H MOVPCON,#80H MOVSCON,#D8H SETBTR1 SETBES ;采用中断方式接收主机呼叫 SETBEA CLRFLAG SETBFLAGAD;初始值为1,接收地址呼叫 RPT: JNBFLAG,RPT CLRFLAG CALLTDATA SETBSM2 AJMPRPTCOM: CLRES ;禁止中断 JNBFLAGAD,COMD CLRRI MOVA,SBUF CJNEA,4FH,EXIT1 MOVSBUF,A ;回送地址 JNBTI,$ CLRTI CLRSM2 ;准备接受命令和数据 CLRFLAGAD EXIT1: SETBES RETICOMD:CLRRI MOVA,SBUF CJNEA,#01H,EXIT2 SETBFLAG SETBES RETI EXIT2:CJNEA,#0FFH,EXIT3 SETBSM2 SETBFLAGAD EXIT3:SETBES RETITDATA:MOVA,31H MOVSBUF,A JNBTI,$ CLRTI MOVA,32H MOVSBUF,A JNBTI,$ CLRTI RET 基于RS-485通信的数据采集控制分站的程序设计从机程序设计FLAGE0BIT00H FALGE1BIT01H FLAGT0BIT02H FLAGS0BIT03H FLAGADBIT04H ORG0000H AJMPINIT ORG0003H AJMPEINT0 ORG000BH AJMPT0INT ORG0013H AJMPEINT1 ORG0023H AJMPCOM ORG0030H INIT:MOVSP,#70H MOVTMOD,#XXH MOVTH0,#XXH MOVTL0,#XXH MOVTH1,#0F3H MOVTL1,#0F3H MOVPCON,#80H MOVSCON,#D8H SETBIT0 SETBIT1 SETBTR0 SETBTR1 SETBPX1 SETBES SETBEX0 SETBEX1 SETBET0 SETBEA CLRFLAGE0 CLRFLAGE1; CLRFLAGT0; CLRFLAGS0; SETBFLA