怎樣分析單片機程序
設(shè)計單片機程序不是從零開始,而是先對已有的相關(guān)程序進(jìn)行閱讀分析。分析程序是設(shè)計、修改、優(yōu)化、維護(hù)的重要步驟。因此,掌握單片機程序的分析方法是非常必要的。
1 詳細(xì)閱讀設(shè)備使用說明書
可投產(chǎn)(使用)的單片機系統(tǒng)都附有使用說明書(手冊),它介紹了該產(chǎn)品的(工作原理)技術(shù)指標(biāo)、使用步驟、操作方法和注意事項,同時還有系統(tǒng)的有關(guān)狀態(tài)、顯示、報警等信息。這為閱讀程序、劃分模塊分析功能提供了極大的幫助。若有該系統(tǒng),應(yīng)對其反復(fù)操作,熟悉使用步驟和操作方法。操作時應(yīng)全面詳細(xì),確保程序和外圍電路的每一部分都執(zhí)行過。
2 了解單片機芯片型號及功能
目前,具有代表性的單片計算機有:8位單片機,即51系列;16位單片機,即96系列;32位嵌入式微處理器,即X86結(jié)構(gòu)的i386EX系列;超低功耗i486系列和RISC結(jié)構(gòu)的i960系列等。由于MCS—51系列單片機具有集成度高,處理功能強,可*性好,價格低廉等優(yōu)點,它在智能儀器儀表、控制工程、測試技術(shù)等領(lǐng)域得到了廣泛的應(yīng)用。繁多的單片機品種,使閱讀者必須首先知道該電路中具體使用了哪一種單片機芯片,弄清其引腳功能、存儲器結(jié)構(gòu)、指令系統(tǒng)等。
3 分析掌握外圍電路各部分的作用
在單片機應(yīng)用系統(tǒng)中,硬件是基礎(chǔ),軟件的功能是對硬件進(jìn)行合理調(diào)配和使用。在控制系統(tǒng)的開發(fā)中,軟件和硬件設(shè)計基本上是同步進(jìn)行的。
3.1 單片機常用的外圍電路
單片機常用的外圍電路包括程序擴展電路、內(nèi)存擴展電路、并行口擴展電路、Watchdog電路、串行通訊電平轉(zhuǎn)換電路、LED(LCD)數(shù)碼顯示電路、鍵盤電路、A/D轉(zhuǎn)換電路、D/A轉(zhuǎn)化電路、指示燈電路等,同時還必須明確該電路的實現(xiàn)方式。單片機外圍電路簡圖見圖1。
3.2 其他電路及連線
為了阻抗匹配,增設(shè)驅(qū)動電路,驅(qū)動大電流電路時采用的光電隔離電路,CMOS電路多余輸入端的處理(接正電源或接地),地線系統(tǒng)(系統(tǒng)地,機殼地或屏蔽地,數(shù)字地,模擬地)的安排,信號線包括讀、寫信號線、片選信號線、時鐘信號線、讀選通信號(PSEN)、地址鎖存信號(ALE)、復(fù)位信號等的連接及I/O地址的分配,掌握這些對程序的閱讀至關(guān)重要。
4 閱讀分析程序
4.1 單片機程序所用語言
由于匯編語言精煉高效,小型的單片機程序常采用匯編語言。而C語言既有高級語言的各種特點,又可對硬件進(jìn)行操作,進(jìn)行結(jié)構(gòu)化程序設(shè)計。對MCS—51單片機,目前采用比較多的有ASM51,C51等。此外,還有匯編語言與BASIC語言混編的單片機程序。
4.2 單片機程序的基本結(jié)構(gòu)與組成
在整個單片機程序中初始化、自檢部分安排在單片機程序的開始,隨后便是主(監(jiān)控)程序,各模塊和子程序,此外還有字形表及數(shù)據(jù)表等。
4.2.1 傳統(tǒng)的程序結(jié)構(gòu)
單片機程序一般采用模塊化設(shè)計。其中心思想是將一個功能較多、程序量較大的程序整體按其功能劃分成若干個相對獨立的程序段。通常把控制單片機應(yīng)用系統(tǒng)工作的整個程序稱為監(jiān)控程序。監(jiān)控程序按模塊分為監(jiān)控主程序和命令處理子程序。命令處理子程序完成各種命令所規(guī)定的具體操作,它按各種命令再分為不同的子程序模塊。它的編程方法與功能要求與系統(tǒng)硬件密切相關(guān),沒有通用的方法。而監(jiān)控主程序是接受和分析來自鍵盤的命令,進(jìn)而把控制轉(zhuǎn)到相應(yīng)的處理子程序的入口,起引導(dǎo)作用。
在一鍵多義的情況下,監(jiān)控主程序要確定控制的轉(zhuǎn)向,除了要知道當(dāng)前按鍵外,還得明確系統(tǒng)目前的“狀況”,即“狀態(tài)”??捎脿顟B(tài)表法設(shè)計監(jiān)控主程序,其核心是設(shè)計一張狀態(tài)表,規(guī)定應(yīng)用系統(tǒng)在某一狀態(tài)下各按鍵的含義,包括應(yīng)執(zhí)行哪一個命令處理子程序和完成狀態(tài)的正確變遷。狀態(tài)表的格式見表1。
評論