标题: 51单片机定义变量error C129: missing ';' before '^1 [打印本页]

作者: lihuajie32    时间: 2023-3-25 11:39
标题: 51单片机定义变量error C129: missing ';' before '^1
大家好!我是单片机新手。定义变量我不想用sbit=p^x这种现成的,我想用unsigned int a;/unsigned char a;编译不了
unsigned int a;//unsigned char a;也试试
P2^0=a;
K1=P2^0;
unsigned int b;
P2^1=b;
K2=P2^1;
unsigned int c;
P1^0=c;
L1=P1^0;

弄成这样,如何实现呢?



作者: Hephaestus    时间: 2023-3-25 14:32
^是异或,P2^0=a;是标准的语法错误——左值不可以参与运算。
作者: devcang    时间: 2023-3-25 15:12

unsigned int b;
P2^1=b;

P2第n位,不可以直接赋值。使用unsign char类型,加以位运算,如与、或等

要把第2位设置高,使用
P2 |= 2;

要把第2位设置低,使用
P2 &= 0xfd;

其它位,类推
作者: Hephaestus    时间: 2023-3-25 15:35
devcang 发表于 2023-3-25 15:12
unsigned int b;
P2^1=b;

错!P2是可以位寻址的,位地址从0xa0~0xa7,P2.1的位地址是0xa1。

你和楼主的错误就是不知道c语言里面^是个运算符,不能随心所欲地做位地址来用,那样子会跟c语言基本语法发生矛盾。Keil C51为了使用位地址,采用的是sbit和^配合使用来定义位地址,比如sbit P21=P2^1;这样的写法,因为标准c语言里面没有sbit这个关键字,是c51自行扩展出来的,所以这种写法不会与c语言语法发生矛盾。
作者: coody_sz    时间: 2023-3-25 22:52
楼主要好好看看C语言,同时看一下C51。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1