導航:首頁 > 編程語言 > 狀態機的c語言編程

狀態機的c語言編程

發布時間:2024-09-14 06:12:15

① C語言 狀態機代碼 怎麼寫

剛好前段時間寫了一個簡單協議的狀態機,代碼就不寫了,說一下大概吧
1、確定一共有多少種狀態,這里的狀態有開和關,細分還有say thankyou 和警告
2、確定狀態之間的遷移條件

如果按照四種狀態:開、關、說謝謝、警告,那麼這四種狀態之前的遷移條件很明顯了

分兩個函數:1、檢查是否需要遷移狀態;2、遷移狀態。
遍歷各種狀態檢查是否有狀態需要發生遷移。一般用一個switch將各種狀態列出,然後在各種狀態裡面用if檢查是否需要遷移狀態,如果需要遷移,做好標記。
再次遍歷各種狀態,檢查哪些狀態做了標記,遷移到新狀態,並做相應的操作,比如進入關的時候,做關門動作

剛才忘記說了,還有一個運轉狀態機函數,main函數在被觸發的情況下調用運轉函數,觸發條件有:投幣,人進入。

② AVR 單片機C語言怎樣實現按鍵按一下led燈閃爍 再按一下led燈滅如此反復循環 led接PC0腳 按鍵接PB0腳 (用

用狀態機寫:
函數1:LED閃爍
main()
{
while(1)
{
if(KEY)
State = ~State;
if(State)
LED閃爍
else
LED熄滅
}
}

③ C語言中如何控制時間高手進!

1.肯定不能用scanf()函數,沒有時間限制設定。
2.方法1:同步邏輯方式:循環檢測1s超時,判斷之內有無鍵盤輸入。
3.方法2:非同步邏輯方式:採用有限狀態機編程,1s超時作為一個事件輸入。
一般情況下,都會採用方法2進行軟體設計。

④ 如何用c語言實現:a,b,c三個事件,依次進行,每到a時就執行事件1,再到b,再執行事件1,再c,再事件1.

典型的狀態機結構,可以去網上找找有關的資料,大概的結構像這樣

enum { state_A, state_B, state_C } state = state_A;

while(1)
{
switch ( state )
{
case state_A:
if ( event_A ) // 這里也可以用switch
{
action_1(); // 在某狀態下發生某事件執行某個動作,並轉入下個狀態
state = state_B;
}
else if ( event_B )
{

}
else
{

}
break;
case state_B:
... ...
}

}

根據你的問題補充,可以這樣劃分狀態
准備輪詢1號機,等待1號機應答(已經輪詢1號機,但1號機未應答),准備輪詢2號機,等待2號機應答,准備輪詢3號機,等待3號機應答,
或者分成3個狀態加一個標志,
輪詢1號機,輪詢2號機,輪詢3號機,加一個有無應答標志,
其實這兩種分法沒有本質區別。
程序框架大概的樣子是這樣
switch ( state )
case 准備輪詢1號機:
發送輪詢1號機的命令
state = 等待1號機的應答;
break;
case 等待1號機的應答;
判斷1號機的應答狀態,可能是正確、錯誤、超時,分別處理,並設置狀態
正確:
state = 准備輪詢2號機
錯誤:
state = 准備輪詢1號機,重試
超時:
state = 准備輪詢1號機,重試,具體做什麼可以很靈活

閱讀全文

與狀態機的c語言編程相關的資料

熱點內容
如何用電腦設置校時伺服器 瀏覽:558
安卓什麼軟體可以換鈴聲 瀏覽:562
如何解決解壓館的劣勢 瀏覽:320
plc編程模塊化 瀏覽:245
單片機寄存器地址 瀏覽:396
七貓免費小說緩存加密 瀏覽:29
天津保稅倉有溯源碼 瀏覽:332
安卓9開發版什麼時候推送 瀏覽:61
程序員可以天天加班嗎 瀏覽:499
垃圾壓縮車品牌 瀏覽:555
自製搜索引擎pdf 瀏覽:76
觸漫安卓手機怎麼登蘋果的號 瀏覽:320
銀行app怎麼收信用卡的錢 瀏覽:288
java十進制轉十六進制演算法 瀏覽:920
pos刷卡需要app認證怎麼弄 瀏覽:252
快速配IP命令 瀏覽:829
小程序後台源碼導入 瀏覽:920
蘋果手機app上的未讀怎麼取消 瀏覽:514
蜻蜓fm導出文件夾 瀏覽:514
我的世界怎麼弄人家的伺服器 瀏覽:361