1 / 15
文档名称:

串口通信协议制定.doc

格式:doc   大小:35KB   页数:15页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

串口通信协议制定.doc

上传人:iris028 2019/11/10 文件大小:35 KB

下载得到文件列表

串口通信协议制定.doc

文档介绍

文档介绍:串口通信协议制定篇一:单片机与上位机通信协议的制定单片机与上位机通信协议的制定单片机和上位机的串口通信协议分为上行协议和下行协议,要分别制定~上行协议,即由单片机向上位机发送数据。下行协议,即由上位机向单片机发送数据。而通信协议又要分固定长度和不定长度两种本文所介绍的协议属于简单的固定字长的通信协议~下行协议由四个字节构成上表是简单的上位机对单片机的控制指令下述函数是C#mu(byteorderDef,bytedata)//参数1为命令字,参数二为要发送的数//据,需要时可直接调用{Byte[]BSendTemp=newByte[SEND_LENTH];BSendTemp[0]=PRE;BSendTemp[1]=orderDef;BSendTemp[2]=data;BSendTemp[3]=END;(BSendTemp,0,SEND_LENTH);}1下位机中用中断方式接收字符,语言,下面是串口接收数据中断ISR(USART_RXC_vect)//串口接收中断{unsignedcharstatus,data;status=UCSRA;//**首先读取UCSRA的值,再读取UDR值,顺序不能颠倒,否则读取UDR后的UCSRA的//值即会改变**data=UDR;if(!Uart_RecvFlag)//判断缓存中的数据是否读完,读完则接收指令{if((status&((1<<FE)|(1<<PE)|(1<<DOR)))==0){rx_buffer[rx_counter]=data;rx_counter++;switch(rx_counter){case1:if(data!=USART_BEGIN_STX)rx_counter=0;break;case4:rx_counter=0;if(data==USART_END_STX)Uart_RecvFlag=1;break;}}}}在单片机主循环程序的最前部分进行指令译码2if(Uart_RecvFlag)//接收到命令{switch(rx_buffer[1]){case0xAA://单片机状态命令控制;ucWorkStatue=rx_buffer[2];//指令数据break;case0xDD://PWM值修改指令OCR2=rx_buffer[2];break;case0xFF://初始温度设定break;}Uart_RecvFlag=0;}//随后进行执行指令switch(ucWorkStatue){case1://空闲模式break;case2://测量模式,但不输出break;case3://测量模式,由串口输出break;case4://PWM输出测试break;default:break;}这样就可以利用串口对单片机进行在线命令控制了;上行协议的制定~和下行协议基本一致~在AVR单片机程序中定义了串口通信输出缓冲区,缓冲区的字长正好为协议的长度;//串口发送缓冲区变量声明volatileunsignedchartx_buffer[TX_BUFFER_SIZE];//定义串口发送缓冲区volatileunsignedchar3tx_wr_index=0,tx_rd_index=0,tx_counter=0;//rx_wr_index写指针,rx_rd_index读指针,rx_counter缓冲区数据个数//USART发送函数voidUSART_Transmit(unsignedchardata)//发送数据函数{while(tx_counter==TX_BUFFER_SIZE);//输出缓冲区满,等待asm(cli);if(tx_counter||((UCSRA&DATA_REGISTER_EMPTY)==0)){tx_buffer[tx_wr_index]=data;if(++tx_wr_index==TX_BUFFER_SIZE)tx_wr_index=0;++tx_counter;}elseUDR=data;asm(sei);}//发送中断服务程序ISR(USART_TXC_vect)//USART发送数据中断{if(tx_counter){--tx_counter;UDR=tx_buffer[tx_rd_index];if(++tx_rd_index==TX_BUFFER_SIZE){tx_rd_index=0;}}}在C#编写的上位机中,=RECEIVE_LENTH;4在时间响应事件中调用协议分析处理函数serialPortCaculate()来分析协议privatevoidse

最近更新

新人教版二年级上册《道德与法治》期中试卷及.. 5页

高一数学必修一集合练习题含答案 16页

青岛版小学数学六年级上册《分数乘分数》教案.. 2页

2025年大学毕业应聘自我介绍范文 5页

2025年大学开学心得体会2000字 9页

DB14T25622022草地资源无人机监测技术规程 8页

T CCTAS47-2022正交异性钢桥面板焊接技术规程.. 17页

道路危货运输培训试题(带答案)-8 3页

汽车租赁行业的发展及现状 17页

汽车经销商成本管理的“收”与“放” 3页

2025年垃圾分类作文素材 7页

2025年四大名著优秀个人读书心得7篇 10页

最新三管轮考证船舶辅机真题海事局公开卷第13.. 41页

2025年圣诞节现代诗歌首 13页

人教版四年级上册《道德与法治》期中测试卷及.. 6页

2025年商标委托代理合同范文3篇最新2025 12页

2025年商场电工转正自我鉴定书 5页

人教版二年级上册《道德与法治》期中试卷(必考.. 5页

2025年国庆节趣事三年级作文范文篇 8页

2025年国庆旅游防火安全知识 4页

T ZGTX22-2023沙漠徒步安全防护指南 11页

2025年江门市蓬江区劳动合同书 6页

海南自行车旅游现状分析及对策专题研究 26页

日租房公寓商业计划书 7页

2021年药物警戒计划模板(新版GVP《药物警戒质.. 10页

驯养篮球犬 1页

项目管理组织结构图 7页

幼儿园第二学期教师政治学习材料 9页

寻找平行线的四条途径 2页

《城市宣教与牧养》专文 12页