我想在用KeilC51定义一个位指针,指向特殊功能寄存器sfr的P3^0那个位

我想在用KeilC51定义一个指向一个位的指针,想要指向特殊功能寄存器sfr的P3^0那个位。
(各位大侠求救啊,我程序都写好了,用unsigned *xxx定义的,结果编译器不报错,测试了下,才发现根本指向的不是sfr的P3口,坑死我了)测试的是:
#include<reg52.h>
void main()
{unsigned *bit0;
bit0=0xb0; //还以为可以指向sfr中P3口绝对地址
*bit0=0;//P3口是阳极的LED,点亮
}
结果不行555

#include<reg52.h> //预处理命令 ; 试试这个
void main(void) //主函数名
{
unsigned int a; //定义变量 a 为unsigned int类型
unsigned char b; //定义变量 b 为unsigned char 类型
do
{ //do while 组成循环
for (a=0; a<65535; a++)
P3_0 = 0; //65535次设P1.0口为低电平,点亮 LED
P3_0 = 1; //设P1.0口为高电平,熄灭 LED
for (a=0; a<30000; a++); //空循环
for (b=0; b<255; b++)
P3_1 = 0; //255次设P1.1 口为低电平,点亮 LED
P3_1 = 1; //设P1.1口为高电平,熄灭 LED
for (a=0; a<30000; a++); //空循环
}
while(1);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-03-29
不推荐用位指针,你可以直接用字节指针。多数位操作都是通过字节的位操作来完成的。基本上的MCU都不存在单独的位地址,位寻址是位指针的基础。