本文主要是介绍马潮按键扫描状态机思想10ms执行一次,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#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; // 状态转换到键释放态}elsekey_state = key_state_0; // 按键已抬起,转换到按键初始态break;case key_state_2:if (key_press) key_state = key_state_0; //按键已释放,转换到按键初始态break;} return key_return;
}
这篇关于马潮按键扫描状态机思想10ms执行一次的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!