首先,要搞清楚语句的含义
P2=0x40
是把0x40即二级制01000000B赋值给P2端口从高到低的八个引脚
同理,P2=0x80
即把八位二进制数 1000 0000B 赋值给P2端口
由此可以推知,同时满足P2.7=1、P2.6=1并且其余P2端口为0的赋值语句就是
P2=0xC0
最后,回答楼主的问题
(1)可以直接赋值 P2=0x80
(2)直接全端口取反P2=~P2
(3)利用与或语句,仅为P2.7和P2.6端口赋值
P2=P2|0x40 ;//P2.6=1
P2=P2&0x7f ;//P2.7=0
p2=p2^0x80;
一般用异或逻辑来反转.异或逻辑为相同为0不同为1 所以上面语句执行之后
其他位保持不变,只有最高位取反了。
#define c_pin(p,x) p&=~(1<<(x)) //清0
#define s_pin(p,x) p|=1<
例:
P0.7 清0 c_pin(P0,7);
P2.5 设1 s_pin(P2,5);
//只对每个位操作不会影响其它位
可以通过移位来实现的啊具体的我们到时候讨论吧