50 lines
1018 B
C
50 lines
1018 B
C
#ifndef KEY_H
|
|
#define KEY_H
|
|
#include "STC8xxxx.h"
|
|
#define DELAY_TIME 10
|
|
|
|
#define KEY_DELAY_COUNT 2
|
|
#define KEY_DELAY_COUNT_LONG 100
|
|
#define KEY_PRESS 0
|
|
#define KEY_LOOSEN 1
|
|
|
|
typedef enum
|
|
{
|
|
KEY_CH1,
|
|
KEY_CHN_MAX,
|
|
}KEY_CHN_e;
|
|
|
|
typedef enum
|
|
{
|
|
KEY_STA_S0 = 0,
|
|
KEY_STA_S1 = 1,
|
|
KEY_STA_S2 = 2,
|
|
}KEY_STA_e;
|
|
|
|
typedef enum
|
|
{
|
|
KEY_VAL_NOT, //没按下
|
|
KEY_VAL_SHORT_PRESS, //单击
|
|
KEY_VAL_CONT_LONG_PRESS, //连续长按
|
|
KEY_VAL_SINGLE_LONG_PRESS, //长按单击
|
|
KEY_VAL_LONG_PRESS_LOOSEN, //长按松开
|
|
}KEY_VAL_e;
|
|
|
|
typedef struct
|
|
{
|
|
u8 Key_pin[KEY_CHN_MAX];
|
|
u8 KEY_STA[KEY_CHN_MAX];
|
|
u8 key_val[KEY_CHN_MAX]; //0:没动作, 1:短按松开, 2:长按连击, 3:长按松开
|
|
u8 key_longPress[KEY_CHN_MAX]; //0:没动作, 1:长按单击
|
|
u8 key_time[KEY_CHN_MAX];
|
|
u8 delayCnt[KEY_CHN_MAX];
|
|
}KEY_t;
|
|
|
|
|
|
void Key_Init(void);
|
|
void Key_ScanTask(void);
|
|
void KEY_TEST(void);
|
|
|
|
extern KEY_t g_Key;
|
|
|
|
#endif |