这种方式也可以看作效率低下的顺序状态(机), 状态变量 mode. mode100 至少要经过 100 次判断,才能运行。建议参照状态机划分状态, 合理分配任务, 同时简化框架:
while(wake_flag) //初始化mode是0
{
judge_mode(); //判断mode
display(); //显示
LaunchTasks(mode); // --------; // 其他任务
keyscan();//键盘扫描(不同的键码有不同的mode,没有按键就是mode=0)
timeout_sleep();//没有按键,超时则休眠
}
LaunchTasks 可以使用 switch case, 也可以使用效率更高的函数指针数组。
|