实际上这个是因为C语言中丛仿没有位 *** 作引起的,比如 BIT1定义为0x0002,BIT2定义为0x0004
将16进制写为2进制,就是 bit0== 0b0000000000000001、bit1== 0b0000000000000010、
bit2== 0b0000000000000100,
如果进行位 *** 作就可以按这种方式进行与或非的 *** 作,比如bit0&bit1=0x0000000000000011
当你检测到这个16位宽的数据最低两位为1时说明BIT0和bit1都为1,明白否?
至于51到MSP这个就不好说了粗郑庆,多看看寄存器 *** 作,底层编程说白了就是寄存器 *** 作,不要用跳跳框框把自己圈在51里面
在学习AVR中常常发现有如类似PORTn&=~BIT(PBn)给某位置高或底的语句,那么它是如何实现的呢?皮消首贺握搭先我们禅拿可以看看BIT在ICC编译器中是如何定义的,头文件 <macros.h>中关于BIT的定义如下,#ifndef BIT
#define BIT(x) (1 <<(x))
#endif
大家看到后便一目了然了,举个简单的例子,如PORTB&=~BIT(0x01)时,是对PINB2置低 电平。执行该语句时,首先将0x01左移一位变为0x02,之后 取反后变为0xfd在和PORTB寄存器原来的值相与在赋给PORTB,这样就保证对某位置低电位的 *** 作
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)