單片機C語言 -- 基於條件選擇的狀態機編程技巧

感謝閱讀本文,在接下來很長的一段時間裏,我將陸續分享項目實戰經驗。從電源、單片機、晶體管、驅動電路、顯示電路、有線通訊、無線通信、傳感器、原理圖設計、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年,全職提供技術開發與技術服務、生產支持等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章