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

如果要给P3.6写入1,语句是: P3^6=1; 吗?
如果是的话为什么我的编译会报错呢:
SHUZIDIANYABIAO.C(28): error C141: syntax error near '='

C语言中不能直接给二进制某一位赋值
但是可以通过按位操作来实现
如果你的P3是整型或者字符型的变量,可以通过“按位或”对某一位赋1,通过“按位与”对某一位赋0
P3=P3|0x40;//这样就是在不改变其他位的同时给第6位赋1
0x40转换成二进制位01000000
假如:P3的值为10110010
10110010
| 01000000
结果为 11110010
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-06-05
keil的话可以。打开你的reg51(或reg52等)头文件,你就会看到已经声明的位变量,
格式是:sbit 位变量名=SFR名^位地址值 (P3也是头文件中最开始部分声明的)
头文件中有
sbit WR=P3^6;
所以你直接写 WR=1就行了
第2个回答  2021-03-03
51单片机头文件用#include<ATB9X51.h>可以,里面定义了P_1.0等;例如:P1_0=0;如果用#include<reg51.h>不行。
第3个回答  2012-02-27
是可以的 双击错误信息 到那一行看看上下有没有错
相似回答