arduino位操作总结

arduino的置位操作总结


void setup()
{
    Serial.begin(115200);
//将a第4位置1,将b的0位4位7位置1
    byte a = B00000010;
    byte b = B00100010;
    a |= (1<<4);
    b |= (1<<7)|(1<<4)|(1<<0);
    Serial.print("a="); Serial.println(a,BIN);
    Serial.print("b="); Serial.println(b,BIN);
    
//将c第4位置0,将d的第1位6位7位置0
    byte c = B11111111;
    byte d = B11111111;
    c &= ~(1<<4);
    d &= ~((1<<7)|(1<<6)|(1<<1));
    Serial.print("c="); Serial.println(c,BIN);
    Serial.print("d="); Serial.println(d,BIN);

    //取e的低8位 
    int e = 36023;
    //e的二进制为10001100 10110111
    e &= 0xff;
    Serial.print("e="); Serial.println(e,BIN);
    
    //取f的高8位
    int f = 36023;
    //f的二进制为10001100 10110111
    f = (f>>8)&0xff;   
    Serial.print("f="); Serial.println(f,BIN);


    //高8位与低8位合并
    byte L = B10000001;
    byte H = B10100001;
    word i;
    i = (H<<8)|L;
    Serial.print("i="); Serial.println(i,BIN);

    //高7位与低1位合并
    char h = B1001000;
    boolean l = 1;
    byte j;
    h<<=1;
    j = h|l;
    Serial.print("j="); Serial.println(j,BIN);

//配置寄存器示例
//假设X Y Z是寄存器配置参数,X位于第0位,Y位于第1位,Z位于第7位
    byte X = 0;
    byte Y = 1;
    byte Z = 7;
    //假设待配置的字节为num
    bool D[]={0,0,0,0,0,0,0,0};
    byte num;

    D[X]=1;//第0位置1
    D[Y]=1;//第1位置1
    D[Z]=1;//第7位置1
    
//将D[7-K]视为最低位赋值给num,随后num左移1位,并重复此步骤
    for(int k=0;k<=7;k++){      
      num <<= 1;//左移1位
      num |= D[7-k];//D[7-k]与num合并
    }
    
    Serial.print("num="); Serial.println(num,BIN);
//最后num的结果为 10000011
 
}


void loop()
{

}

发布了24 篇原创文章 · 获赞 17 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/huanghaoAudio/article/details/80627465