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;
的定義