标题:
单片机双机通讯 仿真+汇编源程序
[打印本页]
作者:
51黑ff
时间:
2016-9-26 12:47
标题:
单片机双机通讯 仿真+汇编源程序
一个51单片机做的双击通讯汇编程序 调试通过 proteus仿真+源代码 给51黑电子论坛的朋友们分享下.
0.png
(20.12 KB, 下载次数: 29)
下载附件
2016-9-26 12:44 上传
0.png
(49.11 KB, 下载次数: 27)
下载附件
2016-9-26 12:45 上传
所有资料下载:
单片机与单片机之间的串口通信.zip
(39.38 KB, 下载次数: 30)
2016-9-26 12:47 上传
点击文件名下载附件
下载积分: 黑币 -5
发送程序:
;本程序收发数据采用查询方式
ORG 0000H
AJMP START
ORG 0030H
START:MOV 30H,#0C0H ;传送的16个数据(0~F)
MOV 31H,#0F9H
MOV 32H,#0A4H
MOV 33H,#0B0H
MOV 34H,#99H
MOV 35H,#92H
MOV 36H,#82H
MOV 37H,#0F8H
MOV 38H,#80H
MOV 39H,#90H
MOV 3AH,#88H
MOV 3BH,#83H
MOV 3CH,#0C6H
MOV 3DH,#0A1H
MOV 3EH,#086H
MOV 3FH,#08EH
MOV TMOD,#20H ;定时器1置为方式2
MOV TH1,#0F4H ;装载定时器初值,波特率2400
MOV TL1,#0F4H
CLR EA
SETB TR1 ;启动定时器
MOV PCON,#00H
MOV SCON,#50H ;设定串口方式1,且准备接收应答信号
LOOP1:MOV SBUF,#0E1H ;发联络信号
JNB TI,[ DISCUZ_CODE_4 ]nbsp; ;等待一帧发送完毕
CLR TI ;允许再发送
JNB RI,[ DISCUZ_CODE_4 ]nbsp; ;等待2号机的应答信号
CLR RI ;允许再接收
MOV A,SBUF ;2号机应答后,渎至A
XRL A,#0E2H ;判断2号机是否准备完毕
JNZ LOOP1 ;2号机未准备好,继续联络
LOOP2:MOV R0,#30H ;2号机准备好,设数据块指针初值
MOV R7,#10H ;设定数据块长度初值
MOV R6,#00H ;清校验和单元
LOOP3:MOV SBUF,@R0 ;发送一个数据字节
MOV A,R6
ADD A,@R0 ;求校验和
MOV R6,A ;保存校验和
INC R0
JNB TI,$
CLR TI
DJNZ R7,LOOP3 ;整个数据块是否发送完毕
MOV SBUF,R6 ;发送校验和
JNB TI,$
CLR TI
JNB RI,[ DISCUZ_CODE_4 ]nbsp; ;等待2号机的应答信号
CLR RI
MOV A,SBUF ;2号机应答,读至A
JNZ LOOP2 ;2号机应答”错误“,转重新发送
RET ;2号机应答”正确“,返回
复制代码
接受程序:
;本程序收发数据采用查询方式
ORG 0000H
AJMP START
ORG 0030H
START:MOV TMOD,#20H ;定时器1置为方式2
MOV TH1,#0F4H ;装载定时器初值,波特率2400
MOV TL1,#0F4H
CLR EA
SETB TR1 ;启动定时器
MOV PCON,#00H
MOV SCON,#50H ;设定串口方式1,且准备接收
LOOP1:JNB RI,[ DISCUZ_CODE_5 ]nbsp; ;等待1号机的联络信号
CLR RI
MOV A,SBUF ;收到1号机信号
XRL A,#0E1H ;判是否为1号机联络信号
JNZ LOOP1 ;不是一号机联络信号,再等待
MOV SBUF,#0E2H ;是1号机联络信号,发应答信号
JNB TI,$
CLR TI
MOV R0,#30H ;设定数据快地址指针初值
MOV R7,#10H ;设定数据块长度初值
MOV R6,#00H ;清校验和单元
LOOP2:JNB RI,$
CLR RI
MOV A,SBUF
MOV @R0,A ;接收数据转储
INC R0
ADD A,R6 ;求校验和
MOV R6,A
DJNZ R7,LOOP2 ;判断数据块是否接收完毕
JNB RI,[ DISCUZ_CODE_5 ]nbsp; ;完毕,接收1号机发来的校验和
CLR RI
MOV A,SBUF
XRL A,R6 ;比较校验和
JZ END1 ;校验和相等,跳至发正确标志
MOV SBUF,#0FFH ;校验和不相等,发错误标志
JNB TI,[ DISCUZ_CODE_5 ]nbsp; ;转重新接收
CLR TI
SJMP LOOP2
END1: MOV SBUF,#00H
JS1: MOV R0,#30H ;显示接到的数据
JS3: MOV A,@R0
MOV P0,A
ACALL DELAY
INC R0
MOV A,R0
CJNE A,#40H,JS2
AJMP JS1
JS2: AJMP JS3
DELAY: MOV R4,#04H
D1: MOV R7,#0FFH
D2: MOV R6,#0FFH
DJNZ R6,$
DJNZ R7,D2
DJNZ R4,D1
RET
END
复制代码
作者:
1534545848
时间:
2016-9-26 21:07
谢谢楼主!下载学习
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1