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