<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

《C與指針》讀書(shū)筆記四

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

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

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

  我們摘取同事的參見(jiàn)一個(gè)例子:

  #define SYS_RUN_PARA_ADD_BASE 0x1000

  enum runParaAdd {

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

  runStageAdd, //運行階段

  heatTempAdd, //加熱溫度

  HTBackTempAdd, //備份溫度

  PT_4_20maAdd, //4-20mA

  DIPAdd, //跳線(xiàn)及遠程班輸入

  OPTAdd, //光耦

  relayAdd, //繼電器數據

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

  startTallAdd, //啟動(dòng)塔

  errAdd, //錯誤寄存器

  YomAdd,

  };

  extern int runPara[YCComAdd+1];

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

  系統會(huì )在RAM區分配一個(gè)整型的數組,空間大小是12個(gè)整型。在VC6.0中應該是48個(gè)字節的空間。在設計通訊程序時(shí)直接根據地址可以訪(fǎng)問(wèn)該數組。

  RMESDATAHead *pMes;

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

  unsigned int REGNumber; //數據數量

  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);

  //讀取運行參數

  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 );

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

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

  一維數組使用最常見(jiàn),地址是線(xiàn)性的,非常簡(jiǎn)單。很容易畫(huà)出內存模型。

  比如:int arrary[10];

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



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

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>