下载此文档

单片机与上位机通信协议的制定.doc


文档分类:通信/电子 | 页数:约6页 举报非法文档有奖
1/6
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/6 下载此文档
文档列表 文档介绍
单片机与上位机通信协议的制定
单片机和上位机的串口通信协议分为上行协议和下行协议,要分别制定!
上行协议,即由单片机向上位机发送数据。
下行协议,即由上位机向单片机发送数据。
 
而通信协议又要分固定长度和不定长度两种
本文所介绍的协议属于简单的固定字长的通信协议!
 
下行协议由四个字节构成
 
起始字PRE
命令字ORD
值VAL
结束字END
附注
1byte
1byte
1byte
1byte

BBH
AAH(ORD_SATA)


单片机状态转换命令标识


01H
EEH
模式1:空闲


02H
EEH
模式2:温度采集


03H
EEH
模式3:温度采集向上位机传送采集值


04H
EEH
模式4:PWM测试
BBH
DDH(ORD_PWM)
value
EEH
PWM占空比值修改指令
BBH
FFH(ORD_TEM)
value
EEH
目标温度控制指令
 
上表是简单的上位机对单片机的控制指令
下述函数是C#中封装的串口通信类中的发送函数的封装
        public void mu(byte orderDef, byte data)//参数1为命令字,参数二为要发送的数
                                                            //据,需要时可直接调用
        {
            Byte[] BSendTemp = new Byte[SEND_LENTH];
            BSendTemp[0] = PRE;
            BSendTemp[1] = orderDef;
            BSendTemp[2] = data;
            BSendTemp[3] = END;
           
(BSendTemp, 0, SEND_LENTH);
        }
下位机中用中断方式接收字符,语言,下面是串口接收数据中断
ISR(USART_RXC_vect)//串口接收中断
{
 unsigned char status,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)
   {
    case 1:
       if(data!=USART_BEGIN_STX)
      

单片机与上位机通信协议的制定 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息