C51 位寻址疑问!解决方案
C51位寻址疑问!我知道,sbit是定义一个可以位寻址的变量如:C/C++ codesbit P00 P0^0P00代表了一个可以位
C51 位寻址疑问!
我知道,
sbit是定义一个可以位寻址的变量如:
C/C++ codesbit P00 = P0^0;
P00代表了一个可以位寻址的变量P0.0,
疑问,上述定义中,那个尖尖“^ ”,是不是异或运算,还有,尖尖后面的那个数“0”,可不可以用一个变量代替。
如
C/C++ codeunsigned char index = 0; if ( P0^index == 1 ) { //........ }
如果可以这样的话,就可以在循环里面方便的遍历可位寻址的寄存器的每一比特了,
由于bit是不能定义数组的,但是bdata这个关键字的意思是在可以位寻址的内部RAM区域20H-2FH中定义一个变量,如
C/C++ codeunsigned char bdata BYTE = 0x55;
如果可以在尖尖后面加一个变量来遍历每一比特的话,不就可以使用这种方式来替代不能用bit定义数组的缺憾了吗!
望牛人解析!
[解决办法]sbit P00 = P0^0; 这里^不是异或,就是这么一个用法,标示P0.0的意思。。。
[解决办法]呵呵,就是c里面规定的,不知哪位先人在编写的时候随手这么一些,这就成了规定了
[解决办法]刚才仔细的看了一下H文件里的内容,里面也有类似于sbit P00 = P0^0这样的应用
但是这些都是集中于对寄存器的各个位的指代,我猜想,在编译器中,^在这里的使用应该是对应了特殊的编译转换,而不是异或的意思
[解决办法]补充一下,编译器对于寄存器名称的转换,最终是转换为数字地址的。而BYTE和BIT的指针形式是不同的。所以LZ的设想应该是无法实现的