typedef enum{
STATE_OFF,
STATE_ON,
STATE_STOP
}ENUM_STATE; //定义ENUM_STATE枚举类型
ENUM_STATE system_state = STATE_OFF; //定义枚举变量system_state, 初始化为STATE_OFF
bit key_on_flag, key_off_flag, work_too_long_flag; //定义3个触发条件的bit变量(其实用2个就行)
void systemStateCtrl(){
if(key_on_flag){
if(system_state==STATE_ON || system_state==STATE_STOP)
system_state = STATE_OFF;
}
else if(key_off_flag){
if(system_state==STATE_OFF)
system_state = STATE_ON;
}
else if(work_too_long_flag){
if(system_state==STATE_ON)
system_state = STATE_STOP;
}
else{
;
}
systemStateWork();//把状态工作程序放这里
}
void systemStateWork(){ //设计你各个状态下的工作
switch( system_state ){
case STATE_OFF:
do_sth1(); //关机时的工作
break;
case STATE_ON:
do_sth2(); //开机时的工作
break;
case STATE_STOP:
do_sth3(); //超时停机时的工作
break;
default:
break;
}
}
nsush 发表于 2019-6-7 00:36
我对delay1s(); delay500ms()这样的延时函数就很不爽,当然程序流程很简单的,用用也没什么,如果是一个还 ...
kissme 发表于 2019-6-16 11:24
新手完全不晓得你说的啥玩意
tesrsm 发表于 2019-6-20 12:01
去除按键的抖动 不用延时函数的话,怎么处理
lianzai 发表于 2019-6-20 13:46
好文章,不知楼主能否弄成pdf格式上传呢,想保存起来
2448289424 发表于 2019-7-8 01:36
楼主是出来工作了还是还在读书自学单片机,看了你发了这篇写得挺好的,之前读书那会对时钟这东西根本就没概 ...
m182892 发表于 2019-7-8 08:21
我觉得这个帖子可以继续加深,例程要多,到一定的程度可以出版书籍。
ccdmcu 发表于 2019-8-2 16:22
按键的松手检测呢?怎么用定时器写?
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |