51串口通信协议(新型篇)

51串口通信协议(新型篇)

ID:37851374

大小:44.50 KB

页数:9页

时间:2019-06-01

51串口通信协议(新型篇)_第1页
51串口通信协议(新型篇)_第2页
51串口通信协议(新型篇)_第3页
51串口通信协议(新型篇)_第4页
51串口通信协议(新型篇)_第5页
资源描述:

《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、////////////////////////////////////////

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。