楼主要好好看看C语言,同时看一下C51。 |
devcang 发表于 2023-3-25 15:12 错!P2是可以位寻址的,位地址从0xa0~0xa7,P2.1的位地址是0xa1。 你和楼主的错误就是不知道c语言里面^是个运算符,不能随心所欲地做位地址来用,那样子会跟c语言基本语法发生矛盾。Keil C51为了使用位地址,采用的是sbit和^配合使用来定义位地址,比如sbit P21=P2^1;这样的写法,因为标准c语言里面没有sbit这个关键字,是c51自行扩展出来的,所以这种写法不会与c语言语法发生矛盾。 |
unsigned int b; P2^1=b; P2第n位,不可以直接赋值。使用unsign char类型,加以位运算,如与、或等 要把第2位设置高,使用 P2 |= 2; 要把第2位设置低,使用 P2 &= 0xfd; 其它位,类推 |
^是异或,P2^0=a;是标准的语法错误——左值不可以参与运算。 |