只需一步,快速開始
熱門: 51單片機 | 24小時必答區 | 單片機教程 | 單片機DIY制作 | STM32 | Cortex M3 | 模數電子 | 電子DIY制作 | 音響/功放 | 拆機樂園 | Arduino | 嵌入式OS | 程序設計
主函數與定時器
增大時基的設置
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; } }
查看全部評分
使用道具 舉報
ccdmcu 發表于 2019-8-2 16:22 按鍵的松手檢測呢?怎么用定時器寫?
laishu12345 發表于 2019-8-9 17:08 if(++key_press_time
IdeaMing 發表于 2019-8-14 10:27 我想問,怎么把DS18B20的加入到你這種機制里?一次通訊時間都要好幾毫秒
IdeaMing 發表于 2019-8-16 16:25 如果同時存在數碼管的刷新呢,比如一秒讀一次18B20,讀的時候數碼管的刷新就被卡了一下
13303022280 發表于 2020-1-7 14:29 如果我只需要執行一次按鍵之后的程序,為了避免按鍵長按導致的重復運行,就用一個變量,在每次進入中斷檢 ...
hubj627 發表于 2020-1-13 09:20 這種針對代碼量小的項目實時性沒有問題。但代碼量大的整個程序架構就會顯得臃腫,也需針對同一個事情,在主 ...
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格式上傳呢,想保存起來
本版積分規則 發表回復 回帖后跳轉到最后一頁
手機版|小黑屋|51黑電子論壇 | 管理員QQ:125739409;技術交流QQ群281945664
Powered by 單片機教程網