首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

C51 位寻址疑问!解决方案

2012-02-20 
C51位寻址疑问!我知道,sbit是定义一个可以位寻址的变量如:C/C++ codesbit P00 P0^0P00代表了一个可以位

C51 位寻址疑问!
我知道,
sbit是定义一个可以位寻址的变量如:

C/C++ code
sbit P00 = P0^0;

P00代表了一个可以位寻址的变量P0.0,
疑问,上述定义中,那个尖尖“^ ”,是不是异或运算,还有,尖尖后面的那个数“0”,可不可以用一个变量代替。

C/C++ code
unsigned char index = 0;    if ( P0^index == 1 )    {       //........    }

如果可以这样的话,就可以在循环里面方便的遍历可位寻址的寄存器的每一比特了,
由于bit是不能定义数组的,但是bdata这个关键字的意思是在可以位寻址的内部RAM区域20H-2FH中定义一个变量,如
C/C++ code
unsigned char bdata BYTE  = 0x55;

如果可以在尖尖后面加一个变量来遍历每一比特的话,不就可以使用这种方式来替代不能用bit定义数组的缺憾了吗!
望牛人解析!

[解决办法]
sbit P00 = P0^0; 这里^不是异或,就是这么一个用法,标示P0.0的意思。。。


[解决办法]
呵呵,就是c里面规定的,不知哪位先人在编写的时候随手这么一些,这就成了规定了
[解决办法]
刚才仔细的看了一下H文件里的内容,里面也有类似于sbit P00 = P0^0这样的应用
但是这些都是集中于对寄存器的各个位的指代,我猜想,在编译器中,^在这里的使用应该是对应了特殊的编译转换,而不是异或的意思
[解决办法]
补充一下,编译器对于寄存器名称的转换,最终是转换为数字地址的。而BYTE和BIT的指针形式是不同的。所以LZ的设想应该是无法实现的

热点排行