在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<abbr id="27omo"></abbr>

<menu id="27omo"><dl id="27omo"></dl></menu>
    • <label id="27omo"><tt id="27omo"></tt></label>

      新聞中心

      EEPW首頁 > 嵌入式系統(tǒng) > 牛人業(yè)話 > 《C與指針》讀書筆記四

      《C與指針》讀書筆記四

      作者: 時間:2016-08-08 來源:網(wǎng)絡(luò) 收藏

        數(shù)組是語言重要的概念,指的是相同類型、地址連續(xù)的一組數(shù)。一般是由數(shù)組名譽下標(biāo)組成。在MODBUS通訊過程中使用數(shù)組作為寄存器的實現(xiàn)方式再合適不過了。雖然在實際情況中因為每個變量的類型不盡相同,但是為了歸一化處理問題,只有選擇容量大的類型。比如一組實際參數(shù)中有char型數(shù)據(jù)又有int 數(shù)據(jù),那就全部使用int類型。雖然浪費了一些RAM空間,但是為通訊程序設(shè)計簡化創(chuàng)造了條件,也為其他模塊的設(shè)計奠定了基礎(chǔ)。

      本文引用地址:http://www.biyoush.com/article/201608/295183.htm

        我們摘取同事的參見一個例子:

        #define SYS_RUN_PARA_ADD_BASE 0x1000

        enum runParaAdd {

        runStateAdd, //運行狀態(tài)

        runStageAdd, //運行階段

        heatTempAdd, //加熱溫度

        HTBackTempAdd, //備份溫度

        PT_4_20maAdd, //4-20mA

        DIPAdd, //跳線及遠程班輸入

        OPTAdd, //光耦

        relayAdd, //繼電器數(shù)據(jù)

        runModeAdd, //運行加熱模式,打開或者關(guān)閉

        startTallAdd, //啟動塔

        errAdd, //錯誤寄存器

        YomAdd,

        };

        extern int runPara[YCComAdd+1];

        分析以上代碼:int runPara[YCComAdd+1]; 定義了個數(shù)組,并且使用枚舉量YCComAdd加1定義了數(shù)組的空間。YCComAdd到底是多少,參見枚舉量runParaAdd定義,YCComAdd應(yīng)該是常量11,11加1等于12。語句int runPara[YCComAdd+1]等價于runPara[12]。

        系統(tǒng)會在RAM區(qū)分配一個整型的數(shù)組,空間大小是12個整型。在VC6.0中應(yīng)該是48個字節(jié)的空間。在設(shè)計通訊程序時直接根據(jù)地址可以訪問該數(shù)組。

        RMESDATAHead *pMes;

        unsigned int regADD,crc; //寄存器地址

        unsigned int REGNumber; //數(shù)據(jù)數(shù)量

        unsigned char i;

        unsigned int j;

        pMes = UART0.RX_buf;

        if(pMes->CMD!=0x03) return;

        regADD = pMes->regADD;

        REGNumber = pMes->REGNumber;

        i=0;

        UART0.TX_buf[i++] = 0x01;

        UART0.TX_buf[i++] = 0x03;

        UART0.TX_buf[i++] = (unsigned char)(REGNumber*2);

        //讀取運行參數(shù)

        if((regADD>=SYS_RUN_ADD_BASE)&&(regADD<=(SYS_RUN_ADD_BASE+SYS_RUN_STATE_ADD)))

        {

        regADD = regADD&0x00ff;

        for(j=0;j

        {

        UART0.TX_buf[i++]=SYS_RUN_PARA[regADD+j]>>8; UART0.TX_buf[i++]=SYS_RUN_PARA[regADD+j]& 0x00FF;

        }

        }

        //生成CRC校驗

        crc = out_crc(UART0.TX_buf, i);

        UART0.TX_buf[i++]= crc>>8;

        UART0.TX_buf[i++]= crc & 0x00FF;

        SSendTxBufUart0( i );

        這兩條語句就是 UART0.TX_buf[i++]=SYS_RUN_PARA[regADD+j]>>8; UART0.TX_buf[i++]=SYS_RUN_PARA[regADD+j]& 0x00FF;

        使用數(shù)組完成通訊程序。只要基本數(shù)據(jù)設(shè)計合理,MODBUS通訊程序非常簡單。雖然在定義變量時浪費一些RAM,但在編寫程序時可以省卻大量的代碼。

        一維數(shù)組使用最常見,地址是線性的,非常簡單。很容易畫出內(nèi)存模型。

        比如:int arrary[10];

        因為我們并沒有初始化arrary數(shù)組,所以值是隨機的。



      關(guān)鍵詞: C 指針

      評論


      相關(guān)推薦

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

      關(guān)閉