学士学位论文___单片机多机通信(课程设计).doc
文本预览下载声明
南京人口学院
课程设计报告
课 程 单片机微型计算机原理与接口技术
论文题目 单片机多机通信
学生姓名
学 号
指导教师
2011年 1月
单片机多机通信
一﹑数据通信协议
1.帧格式:
总字节数 + 命令 + 地址 + 内容 + 校验
2.帧格式说明:
总字节数:4 位
命令:4 位
地址:1 字节
校验:1 字节
内容:实际传送的数据,最大为13字节
3.总字节数说明:总字节数4位,一帧数据最大16个字节,最小3个字节
4.命令格式说明:
0000:寻址命令,此时地址表示从机的ID
0001:应答寻址命令
0010:主机向从机写数据命令
0011:主机向从机读数据命令
0100:从机应答主机的读/写命令
此时是片内寻址命令。地址表示从机内存的起始地址,主机读/写数据的起始地址,地址的增长方向由主机决定,寻址范围:0 ~ 255
0101:从机向主机写数据命令
0110:从机向主机读数据命令
0111:主机响应从机读/写
此时是片内寻址命令。地址表示主机内存的起始地址,从机读/写数的起始地址,地址的增长方向由从机决定,寻址范围:0 ~ 255
1000:
1001:
1010:
1011:
1100:
1101:
此时是片外寻址命令,地址增为2个字节,寻址范围:0 ~ 64K
此命令是未开发命令
1110:帧错误 1111:通信结束命令
5.地址格式说明:
当片内寻址命令时,地址是一个字节,寻址片内范围:0 ~ 255
当片外寻址命令时,地址是两个字节,寻址范围:0 ~ 64K
6.内容格式说明:
是传输的数据,总大小有帧大小以及命令格式决定
7.校验格式说明:
校验是存储帧中数字1的个数
二、主机通信程序流程图
三、从机通信程序流程图
四、主机通信功能模块
1、主机初始化模块
设置缓冲区16个字节(既是发送,又是接收缓冲区)
设置计数值M
设置堆栈指针
2、帧设置模块
设置帧的通信方式(总字节数、命令、地址、内容、校验)
计算校验方式即设置校验字节
3、接受帧模块
送数据到指定的缓冲区
4、发送帧模块
设置发送缓冲区
5、解析帧模块
解析帧大小
解析帧命令
解析地址
五、从机通信功能模块
1、主机初始化模块
设置缓冲区16个字节(既是发送,又是接收缓冲区)
设置计数值M
设置堆栈指针
2、帧设置模块
设置帧的通信方式(总字节数、命令、地址、内容、校验)
计算校验方式即设置校验字节
3、接受帧模块
设置接收缓冲区
4、发送帧模块
根据解析格式发送数据
5、解析帧模块
解析帧大小
解析帧命令
解析地址
/*
多机通信中的主机通信程序
将以地址04H开始的数据发送到从机缓冲区中
*/
org 0000h
ljmp start
org 0024h ;0014h~0023h,16字节为数据缓冲区
start:
mov sp,#03h ;0004h~0013h为堆栈区
mov r2,#6 ;计数值N
mov 07h,#255
clr es ;关闭串口中断
sloop1:call set_frame
mov a,r2
jz error
call send_frame
dec r2
call receive_frame
mov a,07h
jz sloop1 ;没有收到应答帧
call analy_frame ;有收到应答帧
cjne r6,#01h,sloop1 ;没有收到从机地址应答帧
mov r2,#6 ;重设N的值
sloop2:call send_frame ;发送数据帧
mov a,r2
jz er
显示全部