一、独立键盘
1.状态机消抖
define key_state_0 0
#define key_state_1 1
#define key_state_2 2
#define key_input P3
#define key_mask 0x0f
void key_read()
{
static char key_state = 0;
char key_press,key_return = 0;
key_press = key_input & key_mask;
switch(key_state)
{
case key_state_0:
if(key_press != key_mask)
key_state = key_state_1;
break;
case key_state_1:
if(key_press!=key_mask)
{
if(key_press == 0x0e) key_return = 1;
if(key_press == 0x0d) key_return = 2;
if(key_press == 0x0b) key_return = 3;
if(key_press == 0x07) key_return = 4;
key_state = key_state_2;
}
else key_state = key_state_0;
break;
case key_state_2:
if(key_press == 0x0f)
key_state = key_state_0;
break;
}
return key_return;
}
int main()
{
unsigned char key_value