//增加注释
void KeyDown(void)
{
char a;
GPIO_KEY=0x0f; //按键口置高
if(GPIO_KEY!=0x0f) //如果按键有按下
{
Delay10ms(); //延时去抖
if(GPIO_KEY!=0x0f) //还是按下
{
KeyState=1; //记录按下状态
//2aêÔáD
GPIO_KEY=0X0F;
// Delay10ms();
switch(GPIO_KEY) //判断哪行按下,并记录键值
{
case(0X07): KeyValue=0;break;
case(0X0b): KeyValue=1;break;
case(0X0d): KeyValue=2;break;
case(0X0e): KeyValue=3;break; }
//2aêÔDD
GPIO_KEY=0XF0;
Delay10ms();
switch(GPIO_KEY) //判断哪列按下,并记录键值
{
case(0X70): KeyValue=KeyValue;break;
case(0Xb0): KeyValue=KeyValue+4;break;
case(0Xd0): KeyValue=KeyValue+8;break;
case(0Xe0): KeyValue=KeyValue+12;break; }
//等待松开或超时
while((a<50)&&(GPIO_KEY!=0xf0))
{
Delay10ms();
a++;
}
a=0;
}
}
} |