break;
.
.
.
.
===============key.c==============
void KEY_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
u8 KEY_Scan(void)
{
ROW 0_L; ROW 1_H; ROW 2_H; ROW 3_H; ROW 4_H;
if(KEY0) {debounce();return 0x01;}
if(~(~(KEY0)&&(~(KEY1||KEY2||KEY3||KEY4)))) {debounce();return 0x01;}
ROW0_H;ROW1_L;ROW2_H;ROW3_H;ROW4_H;
if(!KEY0) {debounce();return 0x02;}
if(~(~(KEY0)&&(~(KEY1||KEY2||KEY3||KEY4)))) {debounce();return 0x02;}
.
.
.
.
return 0;
}
void debounce(void)
{
while(!(KEY0&KEY1&KEY2&KEY3&KEY4));
delay_ms(10);
}