51单片机编程sbit与#define的区别

在keil编程中:
#define dula P2^6不对
而必须sbit dula=P2^6;
请问为何?

#define是宏定义,定义的东西编译时由编译器进行宏展开
sbit是外部位声明,就是单片机的外部端口
bit是内部20H-2FH的可寻址位定义或着是声明
以上指令都有固定的用途

sbit就是定义一个标志位,也叫位变量,比如一个8位的寄存器就可以看作八个位变量。
#define就是替代或者替换的意思,

^ 符号只能配合sfr才能被识别,你试试P2^6=1,会报错的。好像没必要纠结这个。😂

你可以理解为define为整个P口定义,sbit为某个IO口定义。例如sbit xxx=P2^0。
define xxx P2