请问各位,矩阵键盘中用同一个按键,如何实现两种功能呢?部分程序如下:
unsigned char getkey(void)
{
unsigned char rcode,ccode;
while (key_scan()) //判断是否有按键按下
delay_key(1);
P2=0x0f; //行线输出全为0
rcode=P2&0x0f; //读入列线值
if(rcode!=0x0f) //先检测有无按键按下
{
delay_key(1);
if(rcode!=0x0f)
{
rcode=P2&0x0f; //读入列线值
P2=rcode|0xf0; //输出当前列线值
ccode=P2&0xf0; //读入行线值
return(rcode+ccode); //键盘最后组合码
}
}
return(0xff); //返回该值
}
unsigned char keyscan(void)
{
getkey();
beep();
switch(keybord)
{
case 0xee:keynum=1;break;
case 0xed:keynum=2;break;
case 0xeb:keynum=3;break;
case 0xe7:keynum=11;break;
case 0xde:keynum=4;break;
case 0xdd:keynum=5;break;
case 0xdb:keynum=6;break;
case 0xd7:keynum=13;break;
case 0xbe:keynum=7;break;
case 0xbd:keynum=8;break;
case 0xbb:keynum=9;break;
case 0xb7:keynum=14;break;
case 0x7e:keynum=10;break;
case 0x7d:keynum=0;break;
case 0x7b:keynum=12;break;
case 0x77:keynum=15;break;
default:break;
}
while (~key_scan()) //松手检测
delay_key(1);
return 0;
}
程序中要求当keynum=15时,根据条件,能分别实现两种功能。 |