Arduino 函數的位操作


在程序編輯過程中,我們可以對變量中的某一位進行操作

Arduino 函數的位操作
 

工具/原料

 
  • Arduino UNO 控制器 * 1
  • USB 數據線 * 1
  • Arduino IDE
  • 安裝好 Arduino 控制器驅動的台式機

方法/步驟

 
  1.  

    Arduino IDE 新建代碼的方法,程序的上傳方法,大家可以參考:

    http://jingyan.baidu.com/article/414eccf6a8fb9f6b431f0ab1.html

    來操作

    Arduino 函數的位操作
  2.  

    設置和讀取某一位

    輸入代碼:

    byte flags = 0; //定義位變量

     

    void setFlag( int flagNumber) 

    {

       bitSet(flags, flagNumber);//設定變量flags的flagNumber位為1

    }

     

    void  clearFlag( int flagNumber) 

    {

       bitClear(flags, flagNumber);//設定變量flags的flagNumber位為0

    }

     

    int  getFlag( int flagNumber)

    {

       return  bitRead(flags, flagNumber);//傳回變量flags的flagNumber位

    }

     

    void setup()

    {

      Serial.begin(9600);

      showFlags();

      setFlag(2);  

      setFlag(5);

      showFlags();

      clearFlag(2);

      showFlags();

    }

     

    void loop()

    {}

    //回傳哪些位被設置了

    void showFlags()

    {

        for(int flag=0; flag < 8; flag++)

        {

          if(getFlag(flag) == true)

             Serial.print("* bit set for flag ");

          else

             Serial.print("bit clear for flag ");

     

          Serial.println(flag);

        }

        Serial.println();

    }

    Arduino 函數的位操作
  3.  

    輸出效果如下圖所示,輸出結果中顯示了在程序執行過程中被改變的位

    Arduino 函數的位操作
  4.  

    提取整數中的高位或者低位

    輸入代碼:

    int intValue = 258; // 258 的 16 進制為 0x102

     

    void setup()

    {

      Serial.begin(9600);

    }

     

    void loop()

    {

      int loWord,hiWord;

      byte loByte, hiByte;

     

      hiByte = highByte(intValue); //取出 intValue 的高位

      loByte = lowByte(intValue); //取出 intValue 的低位

     

      Serial.println(intValue,DEC);

      Serial.println(intValue,HEX);

      Serial.println(loByte,DEC);

      Serial.println(hiByte,DEC);

     

      delay(10000); 

    }

    Arduino 函數的位操作
  5.  

    輸出效果如下圖所示,分別通過串口打印輸出了變量的十進制數值、16進制數值、低位和高位

    Arduino 函數的位操作
  6.  

    將高位和低位結合

    輸入代碼:

    int intValue = 0x102;  // 十進制 258

    void setup()

    {

      Serial.begin(9600);

    }

    void loop()

    {

      int loWord,hiWord;

      byte loByte, hiByte;

      hiByte = highByte(intValue);

      loByte = lowByte(intValue);

     

      Serial.println(intValue,DEC);

      Serial.println(loByte,DEC);

      Serial.println(hiByte,DEC);

      

      loWord = word(hiByte, loByte);

      Serial.println(loWord,DEC);

      delay(10000); 

    }

    Arduino 函數的位操作
  7.  

    輸出效果如下圖所示,輸出分別為定義的整數值,低位值,高位值,組合后的整數值

    Arduino 函數的位操作

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM