嵌入式軟體設計之邏輯控制

2021-10-02 14:46:21 字數 1997 閱讀 2046

在嵌入式軟體中,邏輯處理是最基本的操作,如何能使程式簡潔清晰?如何能使程式高效執行?下面記錄一點自己的心得。

1.基本的邏輯

邏輯的定義就必須是嚴謹準確的,一段好的邏輯程式應該能夠消除歧義,不遺漏任何條件或者重複判斷。if/else這種最簡單的不用說了,如下程式考慮乙個if/else if/else的示例。

if(a)

else if(b)

else if(c)

...else

a、b、c的條件必須是無交叉的,確保判斷的排他性。

正常情況的處理放在if或者else if中,常用情況的處理放在靠前的位置,else留到最後,可作為錯誤的處理等。組成else if的完整語句,else是必不可少的,往往在很多實際中有很多else if,強烈建議在最後加上else,即使邏輯已經處理完畢,在else中什麼也不做,也應該留下一條空的語句。

對於複雜邏輯的簡化處理,有德摩根定律、卡諾圖等來輔助分析,就不細說了。

2.餘數與倍數的應用

對於週期性的邏輯控制,餘數和倍數就能很好的表示了。

考察乙個題目,五個燈一排,按下鍵則順次閃其中乙個燈,利用取餘則很好實現這個控制邏輯,邏輯控制如下:

int key=0;

void enter()

void control(key)

if(key==2)

if(key==3)

if(key==4)

else

}

當然上面的實現方式有很多種,但是餘數的使用體現了通過一次計算就可以對數進行分組的思想。在處理較大的數字分組時,餘數就很有用了。考察題目:今天是週日,一年(365天)後是週幾?

只需要365對7取餘即可得出。取餘結果0,1, 2,3,4,5,6 分別代表週日,周一,周二,週三,周四,周五,週六。365%7=1,因此結果是周一。

倍數的使用就比較簡單了,考察乙個二層的選單操作,如何表徵選單狀態呢?這裡給乙個簡單的思路。

一級選單使用0x100,0x200,0x400,0x800,0x100,···,二級選單在其相應的一級選單裡面自加即可。這裡可以有255個子項,需要增加的擴充位數就行,當然自加需要設定乙個限定值。如此使用簡單的&運算就可以確定選單狀態。

2.查表

當有大量的else if時,程式看起來不簡潔,維護也比較麻煩。這裡考慮一種表的實現方法。

考察題目一年中每個月份有多少天?

一種常見的解決可以是:

int mouth ;

int days;

if(mouth=1)

days=31;

else if(mouth=2)

days=28;//暫時不考慮閏月

else if(mouth=3)

days=31;

else if(mouth=4)

days=30;

else if(mouth=5)

days=31;

else if(mouth=6)

days=30;

else if(mouth=7)

days=31;

else if(mouth=8)

days=31;

else if(mouth=9)

days=30;

else if(mouth=10)

days=31;

else if(mouth=11)

days=30;

else if(mouth=12)

days=31;

else

實現這個功能,只需要建立一張表來解決。

int days;

int mouth;

int dayspermouth=

;days=dayspermouth[mouth-1];

用這種方法,考慮閏年也會比較簡單,只需要將這張表改為二維的即可。

當然在演算法中表還可以有很多高階用法,這裡暫時不討論了。

工業嵌入式移動軟體設計

工業嵌入式移動應用對比伺服器應用,執行的環境差異巨大,對軟體設計需要經常考慮的情況有 與動輒以g計的伺服器,嵌入式的儲存一般以mb計,如果是單版機,則以kb計。伺服器與桌面的cpu主頻為ghz級別,嵌入式的低至mhz級別。因此,大pool的申請是不可能的,小塊的記憶體也應當得到良好的管理並適時釋放。...

嵌入式軟體設計 Linux程式設計基礎

一 實驗內容 程式設計及調試題 1 根據要求編寫makefile檔案。有5個檔案分別是main.c visit.h study.h visit.c study.c。具體 如下 main.c檔案 include main int i printf please input the value of i...

嵌入式軟體設計第7次實驗報告

嵌入式軟體設計第7次實驗報告 學號 140201211 姓名 張潤澤 組別 第三組 實驗地點 d19 一 實驗目的 1.熟悉網線的製作 t568b標準直連線 2.學會使用html語言 超文字標記語言 進行網頁的設計 3.學會使用makefsdata.exe製作嵌入式二進位制網頁檔案。二 實驗內容 1...