矩阵键盘为什么if((P1 & 0xf0) != 0xf0)不能改成if(P1= 0xf0);

uchar shaomiao()
{
uchar l,h;
P1 = 0xf0;
if((P1 & 0xf0) != 0xf0)
{
ms1(5);
if((P1 & 0xf0) != 0xf0)
{
l = P1 & 0xf0;
P1 = l | 0x0f;
h = P1 & 0x0f;
anjian = l + h;
while((P1 & 0x0f) !=0x0f);
return (l + h);
}
}

}
说错了,是while((P1 & 0x0f) !=0x0f)中假设第一个键被按下P1不应该是0xee吗?即使乘以0x0f也始终不会等下0x0f呀?

1,你的写法是赋值语句,很明显这里应该是判断
2,这里判断的是端口电平发生变化,也就是有按键按下,所以肯定不是p1==0xf0
3,如果写p1 !=0xf0一般来说也可以,只是这种写法和原来的语句有不同的意义,只能是部分场合能通用。原语句实际上是判断高四位是否有变化,而直接判断则是判断8位中是否有一位发生变化。所以是不一样的
温馨提示:答案为网友推荐,仅供参考
相似回答