这个其实还是比较简单的。主要还是你没有习惯这种方法。
按照lz的意思,应该是这样的:
key = P0;
key = key & 0x0f;
然后是
if(key != 0x0f)
{
//执行语句
}
意思大致是:key先存储P0口的高低电平状态,然后和0x0f做“与”运算(不一定非要是0x0f)。然后得到“与”运算之后的结果,“与”运算的结果如果和0x0f不一致,则表明P0口的数据发生了变化,即按键按下之后,改变了P0的电平状态。如果数据一致,则表示P0电平未发生变化,按键没有被按下。
举个栗子:
若按键在P0.3,P0初始为0x0f,(0000 0111 b),按下按键之后,会变成0x07(0000 0111b),
若按键按下0x07(0000 0111) & 0x0f(0000 1111) = 0x07(0000 0111)不等于0x0f
此时,key的值会赋值给P2。 |