PODIR&=~(0x1<<4)
求解读一下这个语句
PODIR&=~(0x1<<4);
PODIR = PODIR &(~(0x1<<4));
PODIR = PODIR &(~0x10);
PODIR = PODIR &(0xef); //假设 PODIR是8位
PODIR = PODIR &(0xffef); //假设 PODIR是16位
PODIR = PODIR &(0xffffffef); //假设 PODIR是32位
实际就是将 PODIR 第 4 位置 0 (从0开始数 0,1,2,3,4)
这是一种典型的把某个bit置0的写法,具体在这里就是把PODIR的bit4置0,过程自己分析一下吧
我看到这个第一眼想到的问题就是优先级问题。
还好有(),它的优先级很好,先算这个括号里面的。
1 左移四位 即 10000
~ 运算符取反 01111 十六进制为 0x0f
& 与运算符
PODIR &= 0x0f 等于
PODIR = PODIR & 0x0f