单片机与PC机多机通讯的程序.docx
《单片机与PC机多机通讯的程序.docx》由会员分享,可在线阅读,更多相关《单片机与PC机多机通讯的程序.docx(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、下面是我写的一个实现多个下位机(单片机)与一个上位机(PC机)的一主多从串口 通讯程序,用的STC89C52RC,定时器2做串口逋信波特率发生器。实现功能是这样的:用调试助手向单片机发送一个数据包。通讯协议是这样的:数据包的格式如下所示(共10个字节组成):0x2A,0xEB,0x8D,地址码,指令码,数据长度码,数据码,数据码,校验码,0xAD前面三个字节为帧头,即开始符。地址码:欲传送的目的地址,即选定哪一个单片机。指令码:向单片机发送的指令数据长度码:用于指示后面有效数据的个数数据码:传送的数据,配合指令码的纯数据。校验码:累加和校验,对地址码,指令码,数据长度码,数据码进行累加,用来检
2、验数据的完 整性和正确性。OxAD :帧尾,即结束符。本程序实现功能是这样的:用调试助手向单片机发送一个数据包,单片机收到后对数据解析,再回传指定的数据。例如发送:2a eb 8d 01 03 01 01 06 ad指令码为01,单片机接收到后解析,回传Oxce 0x7b 0x11 Oxed。其中前两个字节为开始符, 最后一个字节为结束符。同理,若收到的指令码为02,回传Oxce 0x7b 0x12 Oxed。以此模拟 控制单片机操作。若接收错误,即累加校验码不等于单片机实际计算的累加和,回传Oxce 0x7b 0x02 Oxed, 提示接收错误,要求PC重发数据(模拟,需要上位机软件配合才行
3、)。单片机开机初始化后即向PC发送一个数据Oxce 0x7b 0x00 Oxed,用于指示单片机与PC通 信已连接。下面是程序:#define ID 0x01 单片机地址uint8 rec_data; 串口通信接收数据uint8 state_flag=O; 通信协议解析状态标志,初始化为0uint8 retval=O; 通信协议解析函数返回值,初始化为0uint8 cmd; 指令码uint8 Data2; 数据码uint8 data_count; 数据长度码程序大体思想是:首先定义了几个全局变量,接收到数据后,串口中断子程序中用变量rec.data存储一个 字节的数据,随后对数据进行解析:首先
4、判断数据包的完整性,正:确性,然后提取指令码,数据 码等数据,存放起来用于主程序处理。协议解析过程中,使用一个变量state_flag的全局变量作为协议解析状态标志,用于确 定当前字节处于一帧数据中的那个部位,同时在接收过程中自动对接收数据进行校验和处 理,在数据包接收完的同时也进行了校验的比较。因此当帧尾结束符接收到的时候,则表示一帧 数据已经接收完毕,并且也通过了校验,关键数据也保存到了缓冲区(cmd和Data)中。主程序即可通过查询retval的标志位来进行协议的解析处理。如果retval=l; 错误标志,数据包传送不正确。如果retval=2;接收成功标志,数据包传送成功。接收过程中,
5、只要哪一步收到的数据不是预期值,则直接将状态标志复位,用于下一帧数据的判断,避免状态自锁。以下是程序:void Portlnit();void Timerlnit();void Usartlnit();void usart_cmd_scan();void Data_analysis();的判断,避免状态自锁。以下是程序:void Portlnit();void Timerlnit();void Usartlnit();void usart_cmd_scan();void Data_analysis();各端口初始化定时器初始化串口初始化串口命令扫描通信协议解析函数void Send(uint8
6、 sendcmd); 数据发送函数/* 串口中断服务子程序*/void ser() interrupt 4RI=0;rec_data=SBUF;读取接收到的数据Data_analysis();数据解析)/*函数名:Data_analysis* 描述:通信协议解析函数输入:无* 输出:无备注:解析串口接收到的数据/* 多机通信协议格式*/*数据包的格式如下所示(共10个字节组成):*/* 0x2A,0xEB,0x8D,地址码,指令码,数据长度码,数据码,数据码,校验码,OxAD*/void Data_analysis()static uchar recdata_sum=0; 存放累力和stati
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 PC 机多机 通讯 程序
限制150内