新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > AVR單片機(jī)與上位機(jī)通信協(xié)議的制定

        AVR單片機(jī)與上位機(jī)通信協(xié)議的制定

        作者: 時(shí)間:2013-12-07 來源:網(wǎng)絡(luò) 收藏

        單片機(jī)和的串口分為上行協(xié)議和下行協(xié)議,要分別制定!

        上行協(xié)議,即由單片機(jī)向發(fā)送數(shù)據(jù)。

        下行協(xié)議,即由向單片機(jī)發(fā)送數(shù)據(jù)。

        又要分固定長(zhǎng)度和不定長(zhǎng)度兩種

        本文所介紹的協(xié)議屬于簡(jiǎn)單的固定字長(zhǎng)的!

        下行協(xié)議由四個(gè)字節(jié)構(gòu)成

        起始字PRE 命令字ORD 值VAL 結(jié)束字END 附注
        1byte 1byte 1byte 1byte  
        BBH AAH(ORD_SATA)     單片機(jī)狀態(tài)轉(zhuǎn)換命令標(biāo)識(shí)
        01H EEH 模式1:空閑
        02H EEH 模式2:溫度采集
        03H EEH 模式3:溫度采集向上位機(jī)傳送采集值
        04H EEH 模式4:PWM測(cè)試
        BBH DDH(ORD_PWM) value EEH PWM占空比值修改指令
        BBH FFH(ORD_TEM) value EEH 目標(biāo)溫度控制指令

        上表是簡(jiǎn)單的上位機(jī)對(duì)單片機(jī)的控制指令

        下述函數(shù)是C#中封裝的串口通信類中的發(fā)送函數(shù)的封裝

        public void SerSendCommu(byte orderDef, byte data)//參數(shù)1為命令字,參數(shù)二為要發(fā)送的數(shù)

        //據(jù),需要時(shí)可直接調(diào)用
        {
        Byte[] BSendTemp = new Byte[SEND_LENTH];
        BSendTemp[0] = PRE;
        BSendTemp[1] = orderDef;
        BSendTemp[2] = data;
        BSendTemp[3] = END;
        this.serialPort1.Write(BSendTemp, 0, SEND_LENTH);
        }

        下位機(jī)中用中斷方式接收字符,本文用的是GCC語言,下面是串口接收數(shù)據(jù)中斷

        ISR(USART_RXC_vect)//串口接收中斷
        {
        unsigned char status,data;
        status = UCSRA; //**首先讀取UCSRA的值,再讀取UDR值,順序不能顛倒,否則讀取UDR后的UCSRA的

        //值即會(huì)改變**
        data = UDR;
        if(!Uart_RecvFlag)//判斷緩存中的數(shù)據(jù)是否讀完,讀完則接收指令
        {
        if((status((1FE)|(1PE)|(1DOR)))==0)
        {
        rx_buffer[rx_counter]=data;
        rx_counter++;
        switch(rx_counter)
        {
        case 1:
        if(data!=USART_BEGIN_STX)
        rx_counter=0;
        break;
        case 4:
        rx_counter=0;
        if(data==USART_END_STX)
        Uart_RecvFlag=1;
        break;
        }
        }
        }

        }


        上一頁(yè) 1 2 下一頁(yè)

        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 微博| 岗巴县| 保山市| 宝坻区| 久治县| 增城市| 广宗县| 施甸县| 馆陶县| 抚州市| 盐亭县| 瑞丽市| 贵溪市| 安仁县| 恩平市| 会东县| 荥经县| 湘潭县| 新宾| 城步| 申扎县| 湖口县| 永吉县| 耿马| 德保县| 章丘市| 买车| 八宿县| 稷山县| 岳池县| 清徐县| 江永县| 潼关县| 利辛县| 通渭县| 苏尼特左旗| 临西县| 虹口区| 昌宁县| 桐梓县| 柞水县|