有大佬看看这个矩阵识别缺陷在哪里啊,写了之后能识别返回值,但是按一下键会识别好多次?

int key()
{
int hang,lie;
P3=0x0f;
if(P3!=0x0f)
{
delays(1);
if(P3!=0x0f)
{
switch(P3)
{
case 0x0e:hang=0;break;
case 0x0d:hang=1;break;
case 0x0b:hang=2;break;
case 0x07:hang=3;break;
}
P3=0xf0;
switch(P3)
{
case 0xe0:lie=0;break;
case 0xd0:lie=1;break;
case 0xb0:lie=2;break;
case 0x70:lie=3;break;

}
}
};
return hang*4+lie;
}

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^