reg52.h中不能使用例如 P2_0;这样的定义 而只能使用 P2^0;这样的定义 但是都不可以对位进行直接赋值操作;
而
regx52.h中可以使用 P2_0和P2^0;但是只有使用下划线的才可以对位进行赋值操作
例如P2_0 = 1; 但不可以是P2^0 = 1;
在 C 语言中,特别是用于 8051 单片机的编程时,直接对特殊功能寄存器(SFR)的位进行赋值(如 P2^0 = 1;
)通常是不被允许的,因为 ^
在 C 语言中是一个按位异或(bitwise XOR)运算符,而不是用于位寻址的运算符。此外,大多数编译器不会将 ^
解释为位地址运算符。
reg52.h中可以先定义宏
sbit P2_0 = P2^0;
再通过宏指向
P2_0 = 1;
而regx52.h中已经自带了
sbit P2_0 = P2^0;
的定义