void keydown()
{
u8 a;
key=0x0f; //这里的key应该是定义为按键的端口了,如P0,key=0x0f是打通低4位输入通道
if(key!=0x0f) //读出端口判断有无键按下
{
delay(1000); //一般是延时10ms进行消抖
if(key!=0x0f) //再次读低4位进行判断
{
key=0x0f; //再一次打通低4位输入通道
switch(key) //读出端口值进行判断
{
case(0x07):keyvalue=0;break; //这个地方似乎常量不对,应包括高4位的的值,,否则要改为switch(key&0x0f)
case(0x0b):keyvalue=1;break;
case(0x0d):keyvalue=2;break;
case(0x0e):keyvalue=3;break;
} |