51单片机里P1&=~(1<<0)这个语句为什么可以让最低位的LED灯亮啊
发布网友
发布时间:2022-05-10 08:32
我来回答
共2个回答
热心网友
时间:2023-11-24 11:01
P1&=~(1<<0) 相当于 P1=P1&(~(1<<0))
1<<0 结果是二进制 0000 0001
取反后为 1111 1110
不管P1原来状态如何,相"与"后最后一位一定是0,
即xxxx xxx0 如果LED阳极接VCC,则最低位LED点亮
P1 默认值不是0x90 复位后是0XFF
0x90 是它的寄存器地址追问实在太感谢了,主要就是不确定这里的P1到底是多少。
热心网友
时间:2023-11-24 11:01
P1&=~(1<<0)里面最后那个0可取值0,1,2,...7对应P1不同的位。
(1<<0)是得到一个数 ,让要亮的那一位为1,其它位为0
~(1<<0)是得到一个数,让要亮的那一位为0,其它位为1
P1&=~(1<<0) 是把P1当前的值和上面一行说的那个数 按位与 后赋值给P1,其效果就是要亮的那一位为0,其它位不发生改变。