void KeyScan(void)
{
char i=0,a=0;
for(i=0;i<4;i++)//循环4次,i逐次加1
{
switch(i)
{
case 0:x1=0;x2=1;x3=1;x4=1;break;
case 1:x1=1;x2=0;x3=1;x4=1;break;
case 2:x1=1;x2=1;x3=0;x4=1;break;
case 3:x1=1;x2=1;x3=1;x4=0;break;
}
if(!y1){delayms(20);if(!y1){a=i+1;while(!y1);break;}}
if(!y2){delayms(20);if(!y2){a=i+5;while(!y2);break;}}
if(!y3){delayms(20);if(!y3){a=i+9;while(!y3);break;}}
if(!y4){delayms(20);if(!y4){a=i+13;while(!y4);break;}}
if(!y5){delayms(20);if(!y5){a=i+17;while(!y5);break;}}
/*键盘通过a值来判断按哪个键
第一列 第二列 第三列 第四列
第一行 a=1 a=2 a=3 a=4
第二行 a=5 a=6.......
第三行 a=9.......
第四行 a=13...*/
}
switch(a)
{
case 1:KeySta[0][0]=KeyMap[0][0];break;
case 2:KeySta[0][1]=KeyMap[0][1];break;
case 3:KeySta[0][2]=KeyMap[0][2];break;
case 4:KeySta[0][3]=KeyMap[0][3];break;
case 5:KeySta[1][0]=KeyMap[1][0];break;
case 6:KeySta[1][1]=KeyMap[1][1];break;
case 7:KeySta[1][2]=KeyMap[1][2];break;
case 8:KeySta[1][3]=KeyMap[1][3];break;
case 9:KeySta[2][0]=KeyMap[2][0];break;
case 10:KeySta[2][1]=KeyMap[2][1];break;
case 11:KeySta[2][2]=KeyMap[2][2];break;
case 12:KeySta[2][3]=KeyMap[2][3];break;
case 13:KeySta[3][0]=KeyMap[3][0];break;
case 14:KeySta[3][1]=KeyMap[3][1];break;
case 15:KeySta[3][2]=KeyMap[3][2];break;
case 16:KeySta[3][3]=KeyMap[3][3];break;
case 17:KeySta[4][0]=KeyMap[4][0];break;
case 18:KeySta[4][1]=KeyMap[4][1];break;
case 19:KeySta[4][2]=KeyMap[4][2];break;
case 20:KeySta[4][3]=KeyMap[4][3];break;
default:break;
}
}