感謝閱讀本文,在接下來很長的一段時間裏,我將陸續分享項目實戰經驗。從電源、單片機、晶體管、驅動電路、顯示電路、有線通訊、無線通信、傳感器、原理圖設計、PCB設計、軟件設計、上位機等,給新手綜合學習的平臺,給老司機交流的平臺。所有文章來源於項目實戰,屬於原創。
閱讀說明:
1、Keil4 C51工程網址:
https://yunpan.360.cn/surl_yrivR7JxUxu
2、需要一定的C語言基礎,纔看得懂此文。
一、有限狀態機
有限狀態機是一種概念思想,把複雜的控制邏輯分解成有限個穩定狀態,組成閉環系統,通過事件觸發,讓狀態機按設定的順序處理事務。
單片機C語言的狀態機編程,是利用條件選擇語句(switch – case)切換狀態,通過函數內部指令改變狀態機狀態,讓程序按設定的順序執行。
二、應用說明
1、要想使用狀態機進行編程,需要將任務分解成有限個穩定狀態。
2、舉例說明
上圖爲按鈕按鍵典型的動作圖,可以提取爲四個狀態,分別爲狀態1 = 按鍵談起狀態、狀態2 = 按鍵不穩定狀態1、狀態3 = 按鍵按下狀態、狀態4 = 按鍵不穩定狀態2。
有限狀態機實現如下:
三、編程實例
以LoRa推送爲例進行說明。
1、定義有限狀態機:
共5個狀態,請求數據、推送、驗證、待機、喚醒。
2、主函數:
執行有限狀態機。
3、執行函數
在執行函數中切換狀態機的狀態。
五、小結
單片機C語言的狀態機編程,是利用條件選擇語句(switch
case)切換狀態,通過函數內部指令觸發狀態切換,讓程序按設定的順序執行。
狀態機編程涉及的知識點很多,本文只是簡要的介紹了下,僅僅起到拋磚引玉的作用,日後設計過程中,需要不斷的總結經驗,溝通交流,以達到真正的理解,靈活運用。
歡迎加入硬件家園單片機學習羣,羣號925620931,別具一格的單片機免費教學,以產品爲導向,一起做項目。
開源項目,開發工具,技術資料以及更多原創技術文章,請關注微信公衆號。
硬件家園 yjjy168168168
作者:劉傑,軟硬件技術10年,全職提供技術開發與技術服務、生產支持等。