当前位置:文档之家› 单片机按键程序

单片机按键程序


else
//没有检测到按键
{
Key_Flag=0;
Key_Count=0;
Key_Price=0;
}
}
最后感谢大家能看完,在下还是菜鸟,希望能得到前辈们的指导,拜谢
2014/4/9 四非人 QQ:189708929
按键的处理
下面说的单片机也主要是 51 与台系芯片,也就是现在的工作。其它应用不在讨论范围。才
识有限,也敬请前辈们勘误,指教。
你首先要设置按键 IO 设置成输入 开上拉 (算我废话)
/*********************************************************************
case 4: Key_temp=5; break;
case 8: Key_temp=6; break;
default: break;
}
}
}
}
else
{
Key_Price=Key_Val; //两次按键值不一样,将值送入
Key_Count=0;
//
}
}
//========================================================
return(KeyScan_Val);
//返回按键扫描值
}
/*********************************************************************
函 数 名: void KeyValPor(void)
功能 描述:
按键值处理程序
说 明:
***********************************************************************/
void KeyValPor(void)
{
u8 i ;
Key_Val=KeyScanP!=0)
//判断是否有按键
{
if(Key_Val==Key_Price)
//判断两次值是否一样
{
Key_Count++;
if(Key_Count==15)
//记录 15 次 一般就是 15MS
{
u8 KeyScan_Val;
//按键扫描值
KeyScan_Val=0;
if(P3_4==0)
KeyScan_Val|=0X01;
if(P2_5==0)
KeyScan_Val|=0X02;
if(P3_6==0)
KeyScan_Val|=0X04;
if(P1_7==0)
KeyScan_Val|=0X08;
函 数 名: void KeyScanPor(void)
功能 描述:
按键扫描程序 整合按键统一处理
说 明:
得到按键的值 Key_Val
***********************************************************************/
u8 KeyScanPor(void)
{
Key_Count=0;
//可在此处进行长按按键处理
if(Key_Flag==0)
{
Key_Flag=1;
//只有单按键 //若要多按键则需要重新配置下面这段程序
switch(Key_Val)
{
case 1: Key_temp=1; break;
case 2: Key_temp=3; break;
相关主题