程序BUG是你子函数内部没有返回数值;
unsigned char KeyScan(void) //函数的正确使用方法
{
return (); //返回数据
}
你的程序写的效率不高我给你改一下。
程序我给你改了一下:
unsigned char KeyScan(void)
{
unsigned char keyvalue;
if(KeyPort!=0xff)
{
delayms(10);//延时10ms后再检测一次
if(KeyPort!=0xff)
{
keyvalue=KeyPort;//此是本程序的BUG P1口的值 在松手前获得 但松手后又无法获得 朋友们可以考虑一下解决方法
while(KeyPort!=0xff);
}
}
switch(keyvalue)
{
case 0xfe:return 1;break;//比较keyvalue是否=0xfe 如相等 返回 值1
case 0xfd:return 2;break;
case 0xfb:return 3;break;
case 0xf7:return 4;break;
case 0xef:return 5;break;
case 0xdf:return 6;break;
case 0xbf:return 7;break;
case 0x7f:return 8;break;
default:return 0;break;
}
return (keyvalue); //返回按键数值
}