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