马潮按键扫描状态机思想10ms执行一次

来源:互联网 发布:何新 知乎 编辑:程序博客网 时间:2024/05/17 08:26
#define key_input                PIND.7                        // 按键输入口#define key_state_0        0#define key_state_1        1#define key_state_2        2char read_key(void){                static char key_state = 0;                char key_press, key_return = 0;                key_press = key_input;                                // 读按键I/O电平                switch (key_state)                {                        case key_state_0:                                // 按键初始态                                if (!key_press) key_state = key_state_1;        // 键被按下,状态转换到键确认态                                break;                        case key_state_1:                                // 按键确认态                                if (!key_press)                                {                                        key_return = 1;                        // 按键仍按下,按键确认输出为“1”                                        key_state = key_state_2;        // 状态转换到键释放态                                }                                else                                        key_state = key_state_0;        // 按键已抬起,转换到按键初始态                                break;                        case key_state_2:                                if (key_press) key_state = key_state_0;        //按键已释放,转换到按键初始态                                break;                }                    return key_return;}

0 0
原创粉丝点击