Arduino 函数的位操作

2025-09-25 09:00:37

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 函数的位操作

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢