一对多的通讯单片机汇编语言编程举例
扫描二维码
随时随地手机看文章
一对多的通讯(用第9位作地址和数据的区分位)
协议:
1)主机置SM2=0。所有从机初始状态时置SM2=1;
2)主机向从机发送地址信息一个字节,第9位(TB8)=1。
3)主机向从机发送数据信息一个字节,第9位(TB8)=0。
4)主机发送某一从机地址信息一个字节,第9位(TB8)=1。
5)所有从机都能接收到主机发送的地址信息。
6)从机接收到地址信息后,与本从机号进行比较;若地址符合,置本从机SM2=0,且向主机发送本从机号作为应答(TB8=0)。
7)主机接收到从机正确应答后,开始发送数据字节,第9位TB8=0。
8)只有对应从机才能接收到主机的数据信息,并能与主机对话。
9)结束主机与对应从机一次通讯后,该从机置SM2=1。
10) 主机返回步骤4)。
通讯程序的特殊部分示例:
主机方:(例如:主机与第3号从机通讯)
,,,,,,,,,,
MASTER: MOV SCON,#98H ;串口方式2,SM2=0,REN=1,TB8=0
MTT1: MOV SBUF,#03H ;发送第3号从机号
WAIT1: JBC TI,WAIT2
SJMP WAIT1
WAIT2: JBC RI,MRR1 ;等待接收应答
SJMP WAIT2
MRR1: MOV A,SBUF ;接收应答
XRL A,#03H ;比较是3号从机吗?
JZ RIGHT ;是,转向发送数据
ERR: MOV SBUF,#0 ;不是,(#发送复位信号)
WAIT3: JBC TI,ERR1 ;
SJMP WAIT3 ;
ERR1: SJMP MTT1 ;重新呼叫
RIGHT: CLR TB8 ;联络成功,TB8=0
,,,,,,, ;发送数据
第3号从机响应:
,,,,,,,,,
SLAVE: MOV SCON,#0B0H ;串口方式2,SM2=1,REN=1
,,,,,,,
SRR1: JBC RI,SRR2 ;等待接收地址信号
SJMP SRR1
SRR2: MOV A,SBUF
XRL A,#03H
JNZ SRR1 ;接收到的不是本从机号
CLR SM2 ;主机是呼叫本从机
CLR TB8 ;清SM2=0,准备接收数据,TB8=0
MOV SBUF,#03H ;发送本机号给主机作为应答
WAIT: JBC TI,SRR3
SJMP WAIT
SRR3: JBC RI,SRR4 ;等待主机发送数据
SJMP SRR3
SRR4: JNB RB8,RIGHT ;是复位信号吗?
SETB SM2 ;是,恢复监听地址。
SJMP SRR1 ;
RIGHT: MOV A,SBUF ;成功,接收数据