单片机C语言怎么能对P2口的1,2,3,4,5位进行清零或者置一,而不影响其他位的数字?

2024-12-27 16:21:22
推荐回答(4个)
回答1:

这种单独对指定I/O口赋值而不改变其他位的操作在430单片机用的很多的。
比如:你要给P2.1和P2.2赋1,但不想改变其他位,那么你可以这样写:P2=P2 | 0x06(51单片机的写法)P2OUT|=0x06(430单片机的写法)。
要给指定端口置0,而不影响其他位。比如要求P2^1=0,其他位不变。P2=P2&0xFD(即要置0 的那一位与0,其他位与1)这样就能保证不影响其他位了。

回答2:

首先明确一点,单操作一个引脚和操作一排引脚效果是一样的,只要你操作的时候没有改变其他引脚的值就ok了。

其次,单独改动一个引脚的值你可以定义如下:
sbit P2_0 = P2 ^ 0;
这就是只操作P2的第0个引脚。

最后如果你想一次性修改P2的某几个引脚,可以用位与或者位或(& |)来进行操作。如:
P2 = P2 & 0xff;
具体的用法就要因你自己的需要来定了。

回答3:

P2口有8位 若只对1,2,3,4,5位进行操作,其他位的数字动 让P2&11*****1
就能实现了

回答4:

跟0取异或为保持原来信号,跟1取异或为取反,所以取P2的异或,需要改变的位对应的取1的异或~