|
发表于 2009-6-19 15:01:55
|
显示全部楼层
把KEY_Read()修改一下即可:
static u8 KEY_Read(void)
{
u8 KCode = 0;
u8 row = 0, column = 0;
u8 t;
GPIO_WriteLow(KEY_COLUMN_PORT, KEY_COLUMN_PINALL);
t = (~GPIO_ReadInputData(KEY_ROW_PORT))&KEY_ROW_PINALL;
if(t)
{
// 有键按下,找到它
u8 t2 = KEY_COLUMN1_PIN;
while(++column <= KEY_COLUMN_NUM)
{
KEY_COLUMN_PORT->ODR |= KEY_COLUMN_PINALL; // 所有列线置高
KEY_COLUMN_PORT->ODR &= ~t2; // 扫描列置底
row = (~GPIO_ReadInputData(KEY_ROW_PORT))&KEY_ROW_PINALL; // 读行线
if( row == t)
break;
else
t2 >>= 1;
}
KCode = 3*(column-1);
if( row == KEY_ROW1_PIN ) KCode += 1;
else if(row == KEY_ROW2_PIN) KCode += 2;
else KCode += 3;
}
return KCode;
} |
|