我的时光,停在了你的角落…~
C语言在arm应用中的具体操作
0×20其实与(1<<5)是一个数,因为 1<<5表示1向左移5位,即为100000,这个数代表16进制的20.
所以在对arm芯片的引脚赋值或者输入输出操作时,一般用这种方式
GPGDAT &= ~(1<<5);
GPBCON = (1<<(5*2)); //其实就是指定GPB口的第5位,由于每个位都是由2个字节操作,所以才*2.
ADC0CN &= ~0×20是什么意思?
首先ADC0CN &= ~0×20是一个复合赋值表达式而不是语句。ADC0CN &= ~0×20;才是语句。
这个表达式等价于ADC0CN = ADC0CN & ~0×20。其中&是位与运算,~是按位取反运算。其中~的优先级最高,~0×20的结果是0xffffffdf,也就是二进制11111111111111111111111111011111(作为对比,0×20等于0×00000020,二进制表示为00000000000000000000000000100000)。&运算的结果是当且仅当两个运算数的对应二进制位为1时才为1,因此~0×20参与运算后只有~0×20中为0的这一个二进制位的对应位置设置为0,其它的合原来的ADC0CN一致。也就是ADC0CN & ~0×20的结果是ADC0CN的第5个二进制位(最低位为第0位)修改为0后得到的值。最后再把这个值赋给原来的ADC0CN。所以整个ADC0CN &= ~0×20的结果是把ADC0CN的第5个二进制位修改为0。

最新评论