双机通讯实习
报告一、实验原理
将两片单片机的串口TXD,RXD交叉连接,再加上一个工地端,就可以通过编写接受发送或接受子
程序,使两片单片机相互
通信,再编写一校验语句就可以判断接受数据是否正确。
二、硬件连接图
另外由于Proteus中没有提供单片机地端,硬件连接还应共接一个地端,要求连线尽力短。
三、
软件流程图
四、软件清单
ORG 0000H
SJMP MAIN
MAIN:MOV R4,#28H
LCALL REV;调用接受子程序
LE:LCALL DELAY
DJNZ R4,LE
LCALL TT
LJMP ED
TT:MOV TMOD,#20H
MOV TH1,#0E8H
MOV TL1,#0E8H
SETB TR1;设置波特率
MOV SCON,#50H
MOV PCON,#00H;设串口初值
LP5:MOV SBUF,#0AAH
LP3:JBC TI,LP2
SJMP LP3
LP2:JBC RI,LP4
SJMP LP2
LP4:MOV A,SBUF
CJNE A,#55H,LP5;联机
MOV SBUF,#02H
JNB TI,$
CLR TI
MOV R0,#20H
MOV R3,#02H
MOV R6,#00H
LP6:MOV A,@R0
MOV SBUF,A
ADD A,R6
MOV R6,A
LP7:JBC TI,LP1
SJMP LP7
LP1:INC R0
DJNZ R3,LP6
MOV SBUF,R6;发送校验和
LP0:JBC TI,LP8
SJMP LP0
LP8:JBC RI,LD
SJMP LP8
LD:MOV A,SBUF
JNZ LP6;是否通讯成功
RET
REV:MOV TMOD,#20H
MOV TH1,#0E8H
MOV TL1,#0E8H
SETB TR1
MOV SCON,#50H
MOV PCON,#00H
LOP:JBC RI,LOP1
SJMP LOP
LOP1:MOV A,SBUF
CJNE A,#0AAH,LOP2
MOV SBUF,#55H;发送联机信号
SJMP LOP3
LOP2:MOV SBUF,#0AAH
SJMP LOP
LOP3:JBC TI,LOP4
SJMP LOP3
LOP4:JNB RI,$
CLR RI
MOV A,SBUF
MOV R3,A
MOV R6,#00H
MOV R0,#20H
LOP5:JBC RI,LOP6
SJMP LOP5
LOP6:MOV A,SBUF
MOV @R0,A
ADD A,R6
MOV R6,A
INC R0
DJNZ R3,LOP5
SJMP LOP0
LOP0:JNB RI,$
CLR RI
MOV A,SBUF
XRL A,R6;是否接受正确
JNZ LOP9
MOV SBUF,#00H;发送通讯成功信号
EDD:JBC TI,STOP
SJMP EDD
LOP9:MOV SBUF,#0FFH
CUO:JBC TI,LOP4
SJMP CUO
STOP:RET
DELAY:MOV R3,#64H
DL2:MOV R7,#7DH
DL1:NOP
NOP
DJNZ R7,DL1
DJNZ R3,DL2;延时200ms
RET
ED:SJMP ED
END
五、功能说明
甲乙双机通讯。通讯协议由甲乙双方自由制定,协议中要具有简单的数据校验功能。首先假定的发送机A发送一个联机信号,等到接收机的正确回复后就开始发送指定数据,如由20H开始的连续16个单元的数据,我们做的校验就是简单的就和,看发送和接受前后的所有数据的和是不是一样。如果回复或校验结果不同就重新发送。完成两机的通信。