51单片机c语言编程能给位赋值么?

如果要给P3.6写入1,语句是:P3^6=1;吗?如果是的话为什么我的编译会报错呢:SHUZIDIANYABIAO.C(28):errorC141:syntaxerror... 如果要给P3.6写入1,语句是: P3^6=1; 吗?
如果是的话为什么我的编译会报错呢:
SHUZIDIANYABIAO.C(28): error C141: syntax error near '='
展开
 我来答
戴静柏0Ep
2012-02-27 · TA获得超过1796个赞
知道小有建树答主
回答量:426
采纳率:0%
帮助的人:782万
展开全部
C语言中不能直接给二进制某一位赋值
但是可以通过按位操作来实现
如果你的P3是整型或者字符型的变量,可以通过“按位或”对某一位赋1,通过“按位与”对某一位赋0
P3=P3|0x40;//这样就是在不改变其他位的同时给第6位赋1
0x40转换成二进制位01000000
假如:P3的值为10110010
10110010
| 01000000
结果为 11110010
追梦幽白
2019-06-05 · TA获得超过3181个赞
知道小有建树答主
回答量:1506
采纳率:77%
帮助的人:219万
展开全部
keil的话可以。打开你的reg51(或reg52等)头文件,你就会看到已经声明的位变量,
格式是:sbit 位变量名=SFR名^位地址值 (P3也是头文件中最开始部分声明的)
头文件中有
sbit WR=P3^6;
所以你直接写 WR=1就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kfyzrhk
2021-03-03
知道答主
回答量:15
采纳率:0%
帮助的人:3.1万
展开全部
51单片机头文件用#include<ATB9X51.h>可以,里面定义了P_1.0等;例如:P1_0=0;如果用#include<reg51.h>不行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-02-27
展开全部
是可以的 双击错误信息 到那一行看看上下有没有错
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式