首先,确定你这个是矩阵键盘?看了下程序怎么都像是1*8的键盘而已...
2、回答下你的问题吧:是的,按键按下去了P3就会变
uchar KeyScan()
{
uint crod_l,crod_h;
P3=0xf0;
if((P3&0xf0)!=0xf0) //经过测试跟if以及上面那个赋值有关
{
delay(5);
if((P3&0xf0)!=0xf0)
{
crod_l=P3&0xf0; //读取高四位的数据
P3=crod_l | 0x0f; //crod_l 的高四位的数据保留,低四位全部置1 //为何不能去掉...?
crod_h=P3&0x0f; //读取低四位的数据
while((P3&0x0f)!=0x0f); //为何while((P3&0x0f)!=0x0f); 不行
//这句语句表达的是“当P3的低四位还有按键的时候,就循环,没按键就跳出” ,看起来没什么问题,不过我们编程很少会用while循环直接 //去判断,就怕卡死在里面,这里建议你delay 200~300毫秒,直接在下面return就行了,因为人按按键的速度一般是在100~300毫秒左右
return(crod_l+crod_h); //与while((P3&0xf0)!=0xf0);
}
}
}
解答全都写在程序里了哟~