伪代码实例:洗衣机 功能需求 由功能转变状态图 梳理状态之间的转换的关系 梳理状态之间的转换的关系(添加切换条件) 代码编程 #include "stdio.h" #include "string.h" #include "stdlib.h" #define SELF_CHECK_STATUS (1)//上电自检 #define IDEL_STATUS (2)//空闲 #define COUNT_DOWN_STATUS (3)//倒计时 #define WATER_IN_STATUS (4)//加水 #define DO_WASH_STATUS (5)//洗衣 #define WATER_OUT_STATUS (6)//放水 #define DO_DRY_STATUS (7)//甩干 #define FINISHED_STATUS (8)//洗衣结束 #define ARARM_STATUS (18)//报警 #define PAUSE_STATUS (28)//暂停 int init(void) { return 0; } void global_check(void) { return ; } int auto_check(void) { return 0; } int alarm(void) { return 0; } int wait_for_user(void) { return 0; } int start_countdown(void) { return 0; } int let_water_in(void) { return 0; } int do_wash(void) { return 0; } int let_water_out(void) { return 0; } int do_dry(void) { return 0; } int finished(void) { return 0; } int main(void) { static int step = SELF_CHECK_STATUS;//状态切换标志 init();//开机进行一系列初始化(主要是驱动外设) while(1) { //一些全局的事件检测,用于设置全局标志 global_check(); // 状态机 switch (step) { case SELF_CHECK_STATUS://自检 { auto_check(); if (按下停止) step = FINISHED_STATUS; if (自检pass) step = IDEL_STATUS; else step = ARARM_STATUS; }break; case IDEL_STATUS://空闲 { wait_for_user(); if (按下停止) step = FINISHED_STATUS; if (按下开始) step = COUNT_DOWN_STATUS; }break; case COUNT_DOWN_STATUS://倒计时 { start_countdown(); if (按下停止) step = FINISHED_STATUS; if (倒计时结束) step = WATER_IN_STATUS; }break; case WATER_IN_STATUS://加水 { let_water_in(); if (按下停止) step = FINISHED_STATUS; if (水加满了) step = DO_WASH_STATUS; }break; case DO_WASH_STATUS://洗衣 { do_wash(); if (按下停止) step = FINISHED_STATUS; if (清洗时间结束) step = WATER_OUT_STATUS; }break; case WATER_OUT_STATUS://放水 { let_water_out(); if (按下停止) step = FINISHED_STATUS; if (水放完 && 只洗了一遍) step = WATER_IN_STATUS; else if (水放完 && 洗了两遍) step = 甩干; }break; case DO_DRY_STATUS://甩干 { do_dry(); if (按下停止) step = FINISHED_STATUS; if (甩干时间结束) step = FINISHED_STATUS; }break; case FINISHED_STATUS://洗衣结束 { finished(); if (按下停止) step = FINISHED_STATUS; step = IDEL_STATUS; }break; case ARARM_STATUS://报警 { while(1) { alarm();//死循环,不再响应用户操作,并报警 } }break; case PAUSE_STATUS://暂停 { //功能待完成。。。。。。。 //在任何状态按下暂停键会跳转到暂停态, //再按一次暂停按键会回到之前的状态 }break; default: { }break; } } }
标签:STATUS,break,return,int,void,编程,状态机,step From: https://www.cnblogs.com/kn-zheng/p/17578882.html