<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 怎樣分析單片機程序

怎樣分析單片機程序

作者: 時(shí)間:2012-08-02 來(lái)源:網(wǎng)絡(luò ) 收藏

設計時(shí),在內存開(kāi)辟一個(gè)現態(tài)單元記憶當前的狀態(tài)。當有鍵按下時(shí),監控主程序根據當前按鍵的編碼和現態(tài)這兩個(gè)關(guān)鍵字去查閱狀態(tài)表,從而確定系統該執行哪一個(gè)處理子程序及系統的下一個(gè)狀態(tài)是什么,立即修改現態(tài)單元的內容,以便有新的按鍵時(shí)系統能做出正確的響應。在每個(gè)狀態(tài)下并非所有的按鍵都有定義,即有空鍵。

當某個(gè)中斷發(fā)生時(shí),中斷服務(wù)程序設置相應的標志,而主程序不斷地判斷這些標志,以決定啟動(dòng)哪一個(gè)處理程序。相應的處理程序處理完相關(guān)的任務(wù)后,清除此標志,然后把控制權交還給主程序。對于延時(shí)或定時(shí)處理,可用一個(gè)定時(shí)器來(lái)完成。

4.2.2 基于時(shí)間片的

在單片機實(shí)時(shí)控制系統中引入了現代操作系統的多任務(wù)思想,采用時(shí)間片輪轉調度算法對傳統單片機編程思想進(jìn)行了改進(jìn),并應用在分布式系統中,結構清晰、調度靈活,適用于定時(shí)要求復雜、實(shí)時(shí)性要求強的系統。

4.3 閱讀程序并畫(huà)出程序流程圖

程序流程圖(簡(jiǎn)稱(chēng)框圖)是用來(lái)描述程序處理過(guò)程的工具,推理過(guò)程清晰、直觀(guān)、邏輯性強,可用于刻畫(huà)程序的控制流邏輯,為程序測試和理解提供了一種重要的輔助手段。

只有分析者對程序進(jìn)行多次掃描,畫(huà)出每個(gè)模塊的詳細流程圖,才能明確各個(gè)模塊的任務(wù)和相互聯(lián)系及資源分配和整個(gè)程序的設計思路,各程序模塊的入口、出口和對CPU內部寄存器的占用情況。還有CPU對啟動(dòng)A/D轉換要發(fā)什么控制信號;端口地址是什么;CPU用什么方法得知A/D轉換結束,以便輸入轉換結果;采樣周期多長(cháng)等。這是分析和設計程序最重要的一步,也是邏輯分析和優(yōu)化的基礎。單片機常用功能模塊有:定時(shí)、數據采集、數字采集、數字濾波、標度變換、控制算法、顯示、報警、打印等。

4.4 算法分析

算法是為解決某一特定問(wèn)題而采取的確定的有限的步驟,是求解某一問(wèn)題所使用的一組定義明確的規則,在實(shí)際應用中又稱(chēng)為方法、方式、體制等。對有些較復雜的算法,最好用畫(huà)流程圖的方式來(lái)分析,這樣思路清晰,簡(jiǎn)潔直觀(guān)。

單片機控制系統程序設計中的重要內容,是根據被控制對象的特性,合理選擇算法,以達到所要求的控制精度和指標。例如數據采集時(shí)進(jìn)行數字濾波處理,常用的數字濾波方式有:程序判斷濾波、中位置濾波、算術(shù)平均濾波、遞推平均濾波法、防脈沖干擾平均值濾波、一階滯后濾波等。因此,在閱讀程序前,必須對該問(wèn)題的解決方法有一定的了解,才能確定具體使用了哪一種算法。

4.5 資源分配

確定資源分配,包括ROM、定時(shí)器/計時(shí)器、RAM、中斷源等。其中最關(guān)鍵的是片內RAM的分配,如00H~2FH工作寄存器,常用作指針、計數器、循環(huán)變量等;20H~2FH具有位尋址功能,用來(lái)存放各種標志位、邏輯變量、狀態(tài)變量。對RAM應列出一張RAM資源詳細分配表,以備閱讀查用。在數據存儲器中,安排好采樣數據區、處理結果數據區、顯示和打印數據區、標志區等。該分配表可手動(dòng)畫(huà)出,而用Excel表則更方便。

4.6 標志位

單片機有豐富的位操作指令和位存儲資源。一類(lèi)是為I/O操作服務(wù)的,如監測到的各種邏輯信息可存入位資源中,隨時(shí)供程序使用。另一類(lèi)是為程序本身服務(wù),表明系統的各種狀態(tài)特點(diǎn),傳遞各模塊之間的控制信息,控制程序流向等,這一部分稱(chēng)為軟件標志。閱讀程序時(shí),對每個(gè)位資源必須進(jìn)行詳細記錄,繪出軟件標志的使用說(shuō)明書(shū)。需要說(shuō)明的項目有:名稱(chēng)和位地址:該軟件標志在程序中的代號和存放的位單元。意義:說(shuō)明邏輯1和邏輯0代表的狀態(tài)或功能。對全局定義的軟件標志,它有唯一的定義,對于局部定義的軟件標志,必須注明其有效范圍。生命周期:分析每個(gè)軟件標志初始化的狀態(tài),程序運行時(shí)發(fā)生變化的條件和時(shí)刻,并進(jìn)行記錄。用戶(hù):對軟件標志進(jìn)行讀操作的狀態(tài)或模塊稱(chēng)為該軟件標志的用戶(hù)。軟件標志的使用有兩種,一種是非破壞性的,只讀不寫(xiě);另一種是破壞性使用,這種軟件標志多為某種申請標志,響應后立即清除,可避免重復響應。同一標志位在不同的狀態(tài)下可有不同的含義。多位標志表示多個(gè)狀態(tài),這樣節省標志位。

4.7 抗干擾處理

由于單片機工作環(huán)境比較惡劣和復雜,往往會(huì )影響系統的可*性、安全性。這些干擾有供電系統干擾、過(guò)程通道干擾、空間干擾等,會(huì )導致數據采集誤差加大、控制狀態(tài)失靈、數據受干擾發(fā)生改變、程序運行失常。

為保證單片機控制系統長(cháng)期穩定運行,必須對各種干擾進(jìn)行處理,包括必要的硬件電路,如硬件看門(mén)狗技術(shù);軟件抗干擾技術(shù),如輸入通道抗干擾技術(shù)、數字濾波、RAM數據冗余技術(shù)、軟件陷阱等。軟件和硬件抗干擾技術(shù)結合,這樣才能達到最佳效果。

5 結語(yǔ)

程序設計是創(chuàng )造性的工作,而程序分析往往是為創(chuàng )造性的工作做準備。閱讀程序是從已有的程序開(kāi)始,分析其硬件、軟件功能,對其消化、吸收,才能對程序進(jìn)行修改、維護、優(yōu)化程序,從而擴大系統的適應范圍,提高技術(shù)指標和性能參數。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 單片機程序 外圍電路

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>