再给大家分享一个不错按键程序(来自ourdev)
/****************************************
键盘_不采用定时器_不延时
特点:
按键在松手后有效,灵敏度高,消耗资源少,运行效率高
//独立键盘.无按键动作时其返回值key_value=0,否则返回按键号key_value
uchar key_value;
void Key_Scan()
{
unsigned char temp=0;
static unsigned char temp_code=0;//
static unsigned char key_press=0;//
static unsigned char key_flag=0;//
temp=P3&0x0f;//
if(temp!=0x0f)//?????
{
key_press++;
if(key_press==10)//连续10次(10ms)低电平有效,则认为按键有效
{
key_press=0;
key_flag=1;//
temp_code=temp;//
}
}
else//松手以后进行按键操作
{
if(key_flag==1)//
{
key_flag=0;
switch(temp_code)//
{
case 0x0e: key_value=1;key_flag_s1=(key_flag_s1+1)%4;
break;
case 0x0d: key_value=2; key_flag_s2=(key_flag_s2+1)%4;
break;
case 0x0b: key_value=3;key_flag_s3=(key_flag_s3+1)%4;
break;
case 0x07: key_value=4;key_flag_s4=(key_flag_s4+1)%4;
break;
}
}
}
}