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;

的定义

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐