找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

51单片机定义变量error C129: missing ';' before '^1

查看数: 1705 | 评论数: 4 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2023-3-25 11:39

正文摘要:

大家好!我是单片机新手。定义变量我不想用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^ ...

回复

ID:1034262 发表于 2023-3-25 22:52
楼主要好好看看C语言,同时看一下C51。
ID:883242 发表于 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语言语法发生矛盾。
ID:277550 发表于 2023-3-25 15:12

unsigned int b;
P2^1=b;

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

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

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

其它位,类推
ID:883242 发表于 2023-3-25 14:32
^是异或,P2^0=a;是标准的语法错误——左值不可以参与运算。

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表