#define KEY1 1
#define Cnt_Key1S xxxx // 设置短按的时间,目的是去抖动
#define Cnt_Key1L xxxx // 设置长按的时间
#define Cnt_Val_Key xxxx // 设置长按时,按键赋值的间隔
sbit Key1 = P0^0; // 设置Key1的端口
extern unsigned char Val_Key = 0; // 初始化按键值,这个变量是extern类型的,可被工程中的其他文件引用
void Key_Scan(void)
{
static unsigned long key1_cnt = 0; // 初始化按键Key1的计数器
// Scan Key1if(Key1 != 0) // If Key1 is not pushed
{
if((key1_cnt >= Cnt_Key1S) && (key1_cnt < Cnt_Key1L)) // If short time push
{
Val_Key = KEY1;
}
else;
key1_cnt = 0; // Clear the counter
}
else // If Key1 is pushed
{
key1_cnt++;
if((key1_cnt >= Cnt_Key1L) && (key1_cnt % Cnt_Val_Key == 0)) // If long time push
{
Val_Key = KEY1;
}
}
}