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()
{
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值