欢迎来到天天文库
浏览记录
ID:37851374
大小:44.50 KB
页数:9页
时间:2019-06-01
《51串口通信协议(新型篇)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、51串口通信协议(新型篇)C51编程:这是网友牛毅编的一个C51串口通讯程序!//PC读MCU指令结构:(中断方式,ASCII码表示)//帧:帧头标志
2、帧类型
3、器件地址
4、启始地址
5、长度n
6、效验和
7、帧尾标志//值: 'n''y'
8、'r'
9、0x01
10、x
11、x
12、x
13、0x130x10//字节数: 2
14、1
15、1
16、1
17、1
18、1
19、2//求和:///////////////////////////////////////////////////////////////////////公司名称:***//模块名:protocol.c//创建者:牛毅//修改者://功
20、能描述:中断方式:本程序为mcu的串口通讯提供(贞结构)函数接口,包括具体协议部分//其他说明:只提供对AT89c51具体硬件的可靠访问接口//版本:1.0//信息:QQ75011221/////////////////////////////////////////////////////////////////////#include#include//预定义//帧#defineF_ST10x6e//帧头标志n#defineF_ST20x79//帧头标志y#defineF_R 0x72//帧类型读r#defin
21、eF_W 0x77//帧类型写w#defineF_D 0x64//帧类型数据帧d#defineF_B 0x62//帧类型写回应帧b#defineF_C 0x63//帧类型重发命令帧c#defineF_Q 0x71//帧类型放弃帧q#defineF_ADDR 0x31//器件地址0-9#defineF_END 0x7a//帧尾标志z#defineF_SPACE0x30//空标志0#defineF_ERR1 0x31//错误标志1,flagerr1#defineF_ERR2 0x32//错误标志22//常数#defineS_MAXBUF16
22、 //接收/发送数据的最大缓存量#defineFIELD_MAXBUF48 //最小场缓存,可以大于48字节,因为协议是以20字节为单位传输的#definecommunicationingP1_7//正在通讯(1)标志#defineERRFRAME_MAX5 //连续NOFRAME_CNT次帧不正确#defineERR_NOCNTMAX_RESENDif(++errframe_cnt<=ERRFRAME_MAX)resend_frame();elseerrframe_cnt=communicationing=0;//若超过E
23、RRFRAME_MAX次则令通讯停止ERR_NOCNTMAX_RESEND//public变量unsignedchardatabuf[FIELD_MAXBUF],errframe_cnt;//函数///////////////////////////////////////////////////////////////////////函数名:send()//功能描述:向串口发送一个字符//函数说明://调用函数://全局变量://输入:ch-要发送的ASCII字符//返回:无//设计者:牛毅//修改者://版本:////////////////////
24、/////////////////////////////////////////////////voidsend(unsignedcharch){SBUF=ch;while(TI==0);TI=0;}///////////////////////////////////////////////////////////////////////函数名:receive()//功能描述:从串口接收一个字符//函数说明://调用函数://全局变量://输入:无//返回:一个ASCII字符//设计者:牛毅//修改者://版本:///////////////////
25、//////////////////////////////////////////////////unsignedcharreceive(void){while(RI==0);RI=0;returnSBUF;}///////////////////////////////////////////////////////////////////////函数名:CharToHex()//功能描述:把ASCII字符转换为16进制//函数说明://调用函数://全局变量://输入:ASCII字符//返回:16进制//设计者:牛毅//修改者://版本://///
26、////////////////////////////////////////
此文档下载收益归作者所有