c語言狀態(tài)機設(shè)計模式 用單片機C語言怎么寫用狀態(tài)機實現(xiàn)按鍵控制LED燈閃爍這個程序?
用單片機C語言怎么寫用狀態(tài)機實現(xiàn)按鍵控制LED燈閃爍這個程序?按鍵控制LED閃爍,狀態(tài)機是檢測按鍵,如果沒有按下,它不會閃爍,如果按下,它會開始閃爍。房東提出的問題是一個。你想問狀態(tài)機還是程序?”如何
用單片機C語言怎么寫用狀態(tài)機實現(xiàn)按鍵控制LED燈閃爍這個程序?
按鍵控制LED閃爍,狀態(tài)機是檢測按鍵,如果沒有按下,它不會閃爍,如果按下,它會開始閃爍。
房東提出的問題是一個。你想問狀態(tài)機還是程序?”如何用單片機C語言編寫,用狀態(tài)機實現(xiàn)按鍵控制LED燈閃爍,本程序“如何用單片機C語言編寫,用狀態(tài)機實現(xiàn)按鍵控制LED燈閃爍本程序”???
C語言狀態(tài)機代碼怎么寫?
在用C語言編寫狀態(tài)機之前:
1。確定有多少個狀態(tài),包括開和關(guān)、細分和說謝謝如果有四個狀態(tài):開、關(guān)、謝謝和警告,那么這四個狀態(tài)之前的遷移條件是明顯的。有兩個功能:1。檢查是否需要遷移狀態(tài);
2。遷移狀態(tài)。遍歷各種狀態(tài)以檢查是否存在需要遷移的狀態(tài)。通常,使用一個開關(guān)列出各種狀態(tài),然后在每個狀態(tài)中列出這些狀態(tài),如果用于檢查是否需要遷移狀態(tài)。如果需要遷移,請標(biāo)記它。再次遍歷各種狀態(tài),檢查哪些狀態(tài)已被標(biāo)記,遷移到新狀態(tài),并做相應(yīng)的操作,如進入關(guān)門狀態(tài)時關(guān)門。典型的狀態(tài)機結(jié)構(gòu):enum{state{A,state{B,state{C}state=state{A while(1){switch(state){case state}A:if(event{A)//switch{action}也可以在這里使用{1()//一個事件在某個狀態(tài)下發(fā)生,一個動作被執(zhí)行,下一個狀態(tài)被移到state=state{B}else if(event{B}else{}break case state{B:…}
我在C工作了六年,我覺得這方面的需求還是很大的
首先,嵌入式設(shè)備:幾乎所有的硬件設(shè)備都離不開C,手機和Android設(shè)備都是Linux內(nèi)核,純C,所有的硬件都由C、MCU和數(shù)據(jù)庫驅(qū)動。
第二,網(wǎng)絡(luò)設(shè)備:各種網(wǎng)絡(luò)設(shè)備、光纖設(shè)備、交換機、防火墻、小型家庭路由器、TCP/IP協(xié)議都是用C語言編寫的,C語言的需求和網(wǎng)絡(luò)的發(fā)展空間一樣大。
第三,服務(wù)器端:大部分服務(wù)器端程序都是C,精通nginx和squid,可以使公司上市,如Netshop技術(shù)。云服務(wù)離不開C。亞馬遜,業(yè)界最強大的云,不能靠買書來做這么多。還有流行的大數(shù)據(jù)、IPv6等,涉及的業(yè)務(wù)非常廣泛。很多工具都是用C寫的,比如PHP,python…
但是C不是那么簡單,不僅僅是語法,比如Linux驅(qū)動程序,你應(yīng)該熟悉內(nèi)核架構(gòu),并且有一些硬件知識。C有很多開源代碼要看。歡迎添加
哈哈,房東跟我一樣糊涂。
當(dāng)我在啃C語言的時候,我也想用C語言來制作界面。我走了很多錯誤的路。在這里我希望能給房東一些提示。
如果你想用“純”C來制作界面,那么我肯定會告訴你這是非常困難的。所有的操作都需要調(diào)用API,包括每個按鈕的位置和大小,框的位置和大小等都是計算出來的。這樣,發(fā)展的效率可想而知。
當(dāng)然,也有用C語言編寫的特殊接口程序。例如:QT。具體樓主可以去了解一下。
如果您想感受C語言的“樂趣”,請在Win32中編寫一個程序:
#include
void main()
{
message box(null,“Hello world!“,”my first window program”,MBuok)
//這里的消息框函數(shù)是一個API函數(shù),意思是調(diào)用一個信息框
}
接口只是一個與用戶交互的窗口。例如,在MFC中,接口與程序之間的數(shù)據(jù)傳輸方式是通過函數(shù)update(),update(false)是將變量數(shù)據(jù)傳輸?shù)浇涌?,update(true)是將接口數(shù)據(jù)傳輸?shù)阶兞?。?dāng)然,前提是他們需要有關(guān)聯(lián)。這樣,所有者將了解接口的用法。
MFC是用C開發(fā)的,C和C之間有很大的區(qū)別。很難入門。建議車主先看C的書。理解什么是類,什么是容器,什么是重載,什么是構(gòu)造,什么是解構(gòu),什么是面向?qū)ο蟆2荒苡脙删湓捳f。
讓我給你一些建議。
1:如果你想玩這個界面,你可以用QT編寫,或者用其他簡單的語言(VB,或者國內(nèi)的easy語言)。PS:easy語言本質(zhì)上是C語言的封裝,但是很多函數(shù)都是打包的,這比MFC更容易使用)。
2:如果你想進一步做軟件,可以選擇先學(xué)C,然后再學(xué)MFC
3:C語言非常強大,這是其他編程語言無法比擬的(個人觀點)。你說C語言很好,我覺得你來得有點早。(當(dāng)你從一個菜鳥升到一到兩級的時候,這一點就很清楚了)
4:做更多的項目。附言:如果你想做任何軟件,就開始做吧。不要把要求定得太高。對于比你的水平高一點的軟件來說,做項目是提升速度最快的方法之一
不,你必須用毛筆在A4紙上練習(xí)