#define key_input P3
#define key_state_0 0
#define key_state_1 1
#define key_state_2 2
sbit L1=P0^0;
sbit buzzer=P0^6;
char read_key(void)
{
unsigned char key_press=0;
unsigned char key_return;
static char key_state=0;
key_press=key_input&0x0f;
if(key_press!=0x0f)
{
switch(key_state)
{
case key_state_0:
if(key_press!=0x0f)
key_state=key_state_1;
break;
case key_state_1:
if(key_press!=0x0f)
{
if(key_press==0x07)key_return=4;
if(key_press==0x0b)key_return=5;
if(key_press==0x0d)key_return=6;
if(key_press==0x0e)key_return=7;
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;
}
unsigned char key_val;
unsigned char i;
void Delay10ms() //@11.0592MHz
{
unsigned char i, j;
i = 108;
j = 145;
do
{
while (--j);
} while (--i);
}
void main()
{
while(1)
{
key_val=read_key();
if(key_val==4){P2=0x80;L1=~L1;}
if(key_val==5){P2=0xa0;buzzer=0;}
Delay10ms();
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>