怎樣分析單片機(jī)程序
設(shè)計(jì)時,在內(nèi)存開辟一個現(xiàn)態(tài)單元記憶當(dāng)前的狀態(tài)。當(dāng)有鍵按下時,監(jiān)控主程序根據(jù)當(dāng)前按鍵的編碼和現(xiàn)態(tài)這兩個關(guān)鍵字去查閱狀態(tài)表,從而確定系統(tǒng)該執(zhí)行哪一個處理子程序及系統(tǒng)的下一個狀態(tài)是什么,立即修改現(xiàn)態(tài)單元的內(nèi)容,以便有新的按鍵時系統(tǒng)能做出正確的響應(yīng)。在每個狀態(tài)下并非所有的按鍵都有定義,即有空鍵。
當(dāng)某個中斷發(fā)生時,中斷服務(wù)程序設(shè)置相應(yīng)的標(biāo)志,而主程序不斷地判斷這些標(biāo)志,以決定啟動哪一個處理程序。相應(yīng)的處理程序處理完相關(guān)的任務(wù)后,清除此標(biāo)志,然后把控制權(quán)交還給主程序。對于延時或定時處理,可用一個定時器來完成。
4.2.2 基于時間片的單片機(jī)程序
在單片機(jī)實(shí)時控制系統(tǒng)中引入了現(xiàn)代操作系統(tǒng)的多任務(wù)思想,采用時間片輪轉(zhuǎn)調(diào)度算法對傳統(tǒng)單片機(jī)編程思想進(jìn)行了改進(jìn),并應(yīng)用在分布式系統(tǒng)中,結(jié)構(gòu)清晰、調(diào)度靈活,適用于定時要求復(fù)雜、實(shí)時性要求強(qiáng)的系統(tǒng)。
4.3 閱讀程序并畫出程序流程圖
程序流程圖(簡稱框圖)是用來描述程序處理過程的工具,推理過程清晰、直觀、邏輯性強(qiáng),可用于刻畫程序的控制流邏輯,為程序測試和理解提供了一種重要的輔助手段。
只有分析者對程序進(jìn)行多次掃描,畫出每個模塊的詳細(xì)流程圖,才能明確各個模塊的任務(wù)和相互聯(lián)系及資源分配和整個程序的設(shè)計(jì)思路,各程序模塊的入口、出口和對CPU內(nèi)部寄存器的占用情況。還有CPU對啟動A/D轉(zhuǎn)換要發(fā)什么控制信號;端口地址是什么;CPU用什么方法得知A/D轉(zhuǎn)換結(jié)束,以便輸入轉(zhuǎn)換結(jié)果;采樣周期多長等。這是分析和設(shè)計(jì)程序最重要的一步,也是邏輯分析和優(yōu)化的基礎(chǔ)。單片機(jī)常用功能模塊有:定時、數(shù)據(jù)采集、數(shù)字采集、數(shù)字濾波、標(biāo)度變換、控制算法、顯示、報(bào)警、打印等。
4.4 算法分析
算法是為解決某一特定問題而采取的確定的有限的步驟,是求解某一問題所使用的一組定義明確的規(guī)則,在實(shí)際應(yīng)用中又稱為方法、方式、體制等。對有些較復(fù)雜的算法,最好用畫流程圖的方式來分析,這樣思路清晰,簡潔直觀。
單片機(jī)控制系統(tǒng)程序設(shè)計(jì)中的重要內(nèi)容,是根據(jù)被控制對象的特性,合理選擇算法,以達(dá)到所要求的控制精度和指標(biāo)。例如數(shù)據(jù)采集時進(jìn)行數(shù)字濾波處理,常用的數(shù)字濾波方式有:程序判斷濾波、中位置濾波、算術(shù)平均濾波、遞推平均濾波法、防脈沖干擾平均值濾波、一階滯后濾波等。因此,在閱讀程序前,必須對該問題的解決方法有一定的了解,才能確定具體使用了哪一種算法。
4.5 資源分配
確定資源分配,包括ROM、定時器/計(jì)時器、RAM、中斷源等。其中最關(guān)鍵的是片內(nèi)RAM的分配,如00H~2FH工作寄存器,常用作指針、計(jì)數(shù)器、循環(huán)變量等;20H~2FH具有位尋址功能,用來存放各種標(biāo)志位、邏輯變量、狀態(tài)變量。對RAM應(yīng)列出一張RAM資源詳細(xì)分配表,以備閱讀查用。在數(shù)據(jù)存儲器中,安排好采樣數(shù)據(jù)區(qū)、處理結(jié)果數(shù)據(jù)區(qū)、顯示和打印數(shù)據(jù)區(qū)、標(biāo)志區(qū)等。該分配表可手動畫出,而用Excel表則更方便。
4.6 標(biāo)志位
單片機(jī)有豐富的位操作指令和位存儲資源。一類是為I/O操作服務(wù)的,如監(jiān)測到的各種邏輯信息可存入位資源中,隨時供程序使用。另一類是為程序本身服務(wù),表明系統(tǒng)的各種狀態(tài)特點(diǎn),傳遞各模塊之間的控制信息,控制程序流向等,這一部分稱為軟件標(biāo)志。閱讀程序時,對每個位資源必須進(jìn)行詳細(xì)記錄,繪出軟件標(biāo)志的使用說明書。需要說明的項(xiàng)目有:名稱和位地址:該軟件標(biāo)志在程序中的代號和存放的位單元。意義:說明邏輯1和邏輯0代表的狀態(tài)或功能。對全局定義的軟件標(biāo)志,它有唯一的定義,對于局部定義的軟件標(biāo)志,必須注明其有效范圍。生命周期:分析每個軟件標(biāo)志初始化的狀態(tài),程序運(yùn)行時發(fā)生變化的條件和時刻,并進(jìn)行記錄。用戶:對軟件標(biāo)志進(jìn)行讀操作的狀態(tài)或模塊稱為該軟件標(biāo)志的用戶。軟件標(biāo)志的使用有兩種,一種是非破壞性的,只讀不寫;另一種是破壞性使用,這種軟件標(biāo)志多為某種申請標(biāo)志,響應(yīng)后立即清除,可避免重復(fù)響應(yīng)。同一標(biāo)志位在不同的狀態(tài)下可有不同的含義。多位標(biāo)志表示多個狀態(tài),這樣節(jié)省標(biāo)志位。
4.7 抗干擾處理
由于單片機(jī)工作環(huán)境比較惡劣和復(fù)雜,往往會影響系統(tǒng)的可*性、安全性。這些干擾有供電系統(tǒng)干擾、過程通道干擾、空間干擾等,會導(dǎo)致數(shù)據(jù)采集誤差加大、控制狀態(tài)失靈、數(shù)據(jù)受干擾發(fā)生改變、程序運(yùn)行失常。
為保證單片機(jī)控制系統(tǒng)長期穩(wěn)定運(yùn)行,必須對各種干擾進(jìn)行處理,包括必要的硬件電路,如硬件看門狗技術(shù);軟件抗干擾技術(shù),如輸入通道抗干擾技術(shù)、數(shù)字濾波、RAM數(shù)據(jù)冗余技術(shù)、軟件陷阱等。軟件和硬件抗干擾技術(shù)結(jié)合,這樣才能達(dá)到最佳效果。
5 結(jié)語
程序設(shè)計(jì)是創(chuàng)造性的工作,而程序分析往往是為創(chuàng)造性的工作做準(zhǔn)備。閱讀程序是從已有的程序開始,分析其硬件、軟件功能,對其消化、吸收,才能對程序進(jìn)行修改、維護(hù)、優(yōu)化程序,從而擴(kuò)大系統(tǒng)的適應(yīng)范圍,提高技術(shù)指標(biāo)和性能參數(shù)。
評論