C51單片機(jī)教程第5章 - 副本 - 副本 - 副本 - 副本 - 副本.ppt_第1頁(yè)
C51單片機(jī)教程第5章 - 副本 - 副本 - 副本 - 副本 - 副本.ppt_第2頁(yè)
C51單片機(jī)教程第5章 - 副本 - 副本 - 副本 - 副本 - 副本.ppt_第3頁(yè)
C51單片機(jī)教程第5章 - 副本 - 副本 - 副本 - 副本 - 副本.ppt_第4頁(yè)
C51單片機(jī)教程第5章 - 副本 - 副本 - 副本 - 副本 - 副本.ppt_第5頁(yè)
已閱讀5頁(yè),還剩55頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第5章 單片機(jī)實(shí)用開(kāi)發(fā)步驟,5.1 單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)的一般流程 5.2 單片機(jī)匯編程序的編輯方法 5.3 源程序的編譯 5.4 程序的仿真調(diào)試,單片機(jī)應(yīng)用系統(tǒng)是以單片機(jī)為核心,配以相應(yīng)的外圍電路和軟件,能實(shí)現(xiàn)某種功能的應(yīng)用系統(tǒng),它由硬件部分和軟件部分組成。硬件是系統(tǒng)的基礎(chǔ),軟件則是在硬件的基礎(chǔ)上對(duì)其合理的調(diào)配和使用,從而完成應(yīng)用系統(tǒng)所要完成的任務(wù)。,5.1 單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)的一般流程,單片機(jī)應(yīng)用系統(tǒng)的研制過(guò)程主要包括總體設(shè)計(jì)、硬件設(shè)計(jì)、軟件設(shè)計(jì)、仿真調(diào)試等幾個(gè)階段,圖5-1為單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)過(guò)程框圖。單片機(jī)應(yīng)用系統(tǒng)一般要求可靠性好、系統(tǒng)具有自診斷功能、操作維修方便、性能價(jià)格比較高。這些要

2、求在進(jìn)行應(yīng)用系統(tǒng)設(shè)計(jì)的過(guò)程中要根據(jù)不同的需要和應(yīng)用場(chǎng)合予以考慮。,圖5-1 單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)過(guò)程框圖,1. 總體設(shè)計(jì) (1) 總體方案設(shè)計(jì)、確定技術(shù)指標(biāo)對(duì)于一個(gè)待開(kāi)發(fā)的單片機(jī)應(yīng)用系統(tǒng),應(yīng)收集相關(guān)的技術(shù)資料,查看過(guò)去是否有類(lèi)似項(xiàng)目、產(chǎn)品。如果有,則可分析這些項(xiàng)目、產(chǎn)品有什么優(yōu)點(diǎn)、缺點(diǎn),有什么值得借鑒。如果沒(méi)有,則應(yīng)首先從理論上分析、探討實(shí)現(xiàn)的可能方案,根據(jù)客觀條件如環(huán)境、測(cè)試手段、儀器設(shè)備、資金成本等,選擇一種最佳方案。,總體方案確定后,對(duì)應(yīng)用對(duì)象的工作過(guò)程進(jìn)行深入調(diào)查和分析,了解課題的要求、信號(hào)的種類(lèi)和數(shù)量、應(yīng)用環(huán)境等。不管是老產(chǎn)品改造還是新產(chǎn)品的設(shè)計(jì),都應(yīng)對(duì)產(chǎn)品性能改善的程度、成本、可靠性

3、、可維護(hù)性及經(jīng)濟(jì)效益等進(jìn)行綜合考慮,提出合理可行的技術(shù)指標(biāo)。主要技術(shù)指標(biāo)是系統(tǒng)設(shè)計(jì)的依據(jù)和出發(fā)點(diǎn),此后的整個(gè)設(shè)計(jì)與開(kāi)發(fā)過(guò)程都要圍繞如何能達(dá)到技術(shù)指標(biāo)的要求來(lái)進(jìn)行。,(2) 具體方案設(shè)計(jì)(軟硬件功能劃分)具體方案設(shè)計(jì)是將總體設(shè)計(jì)方案具體化、細(xì)化。畫(huà)出各部分功能框圖,大致給出各框圖的實(shí)現(xiàn)方法,明確哪些部分由軟件完成,哪些部分由硬件完成。系統(tǒng)的硬件配置和軟件的設(shè)計(jì)是緊密地聯(lián)系在一起的,且硬件和軟件具有一定的互換性。多用硬件完成一些功能,可以提高工作速度,減少軟件研制工作量,但增加了硬件成本。若用軟件替代某些硬件的功能,可使硬件成本降低,但增加了軟件的復(fù)雜性,而且降低了系統(tǒng)的工作速度。因此,總體設(shè)計(jì)時(shí)

4、,應(yīng)綜合考慮以上因素,合理搭配軟硬件的比重。,(3) 機(jī)型和器件選擇在選擇機(jī)型和器件時(shí)應(yīng)考慮以下幾點(diǎn)。 貨源充足穩(wěn)定,便于批量生產(chǎn)。 在考慮性能/價(jià)格比的前提下,選擇最容易實(shí)現(xiàn)應(yīng)用系統(tǒng)技術(shù)指標(biāo)的機(jī)種。 所選機(jī)型功能強(qiáng)、性能價(jià)格比好、有便于使用的開(kāi)發(fā)裝置。 要選擇設(shè)計(jì)者最熟悉的機(jī)種和元器件,以縮短研制周期。 按照系統(tǒng)的精度、速度和可靠性等方面的要求合理選擇包括傳感器、模擬電路、輸入輸出電路和存儲(chǔ)器等器件。,2. 硬件設(shè)計(jì) 硬件設(shè)計(jì)的任務(wù)是根據(jù)總體設(shè)計(jì)要求,確定系統(tǒng)擴(kuò)展所需的擴(kuò)展部分和各功能模塊,包括存儲(chǔ)器(EPROM、E2PROM、FLASHROM和RAM)的擴(kuò)展、I/O電路、A/D、D/A電路

5、以及有關(guān)外圍電路(鍵盤(pán)、顯示器、打印機(jī))等,然后設(shè)計(jì)出系統(tǒng)的硬件電路原理圖。,(1) 程序存儲(chǔ)器 可作為程序存儲(chǔ)器的芯片有EPROM、E2PROM及FLASHROM等。從性能和價(jià)格方面考慮,對(duì)于大批量生產(chǎn)已成熟的應(yīng)用系統(tǒng)宜選用EPROM、FLASHROM。調(diào)試階段以及樣機(jī)的研制可選用FLASHROM、E2PROM。,(2) 數(shù)據(jù)存儲(chǔ)器和I/O接口 對(duì)于數(shù)據(jù)存儲(chǔ)器的容量需求,各個(gè)系統(tǒng)之間差別較大,對(duì)于常規(guī)的智能儀器和實(shí)時(shí)控制系統(tǒng),MCS-51單片機(jī)片內(nèi)RAM已能滿足要求。若需要擴(kuò)充少量RAM,可以考慮選用RAM/IO擴(kuò)展芯片8155,不僅擴(kuò)充了RAM,而且增加輸入輸出接口。對(duì)于數(shù)據(jù)采集系統(tǒng),往往

6、需要有較大容量的RAM存儲(chǔ)器,這時(shí)RAM芯片的選擇原則是盡可能減少芯片的數(shù)量。,在選擇I/O接口電路時(shí),應(yīng)從體積、價(jià)格、功能、負(fù)載等方面考慮。標(biāo)準(zhǔn)的可編程接口電路8255、8155接口簡(jiǎn)單,使用方便,對(duì)總線負(fù)載小,可優(yōu)先選用,但對(duì)要求口線擴(kuò)充較少的系統(tǒng),則可用TTL或CMOS電路,以提高口線的利用率。需要注意的是,CPU的I/O口負(fù)載能力有限,擴(kuò)展以后,不宜滿載,應(yīng)留有余量,否則會(huì)降低系統(tǒng)抗干擾能力。 對(duì)于A/D和D/A電路芯片的選擇原則,應(yīng)根據(jù)系統(tǒng)對(duì)它的速度、精度和價(jià)格的要求來(lái)確定。 外圍模擬電路應(yīng)根據(jù)系統(tǒng)的要求,在速度、精度和價(jià)格等方面選用,同時(shí)還應(yīng)注意它們與傳感器等的匹配問(wèn)題。,(3)

7、總線驅(qū)動(dòng) MCS-51系列單片機(jī)的外部擴(kuò)展空間可達(dá)64KB,但擴(kuò)展總線口(P0、P2)的負(fù)載能力有限(P0口為8個(gè)LSTTL電路,P2口為4個(gè)LSTTL電路)。若負(fù)載過(guò)重,系統(tǒng)便不能可靠地工作,這時(shí)可在P0口增加雙向三態(tài)緩沖器74LS245,在P2口加單向三態(tài)緩沖器74LS244。,3. 軟件設(shè)計(jì) 軟件設(shè)計(jì)的任務(wù)是在總體設(shè)計(jì)和硬件設(shè)計(jì)的基礎(chǔ)上確定程序結(jié)構(gòu),分配單片機(jī)內(nèi)部RAM資源,劃分功能模塊,然后進(jìn)行主程序和各模塊程序的設(shè)計(jì),最后連接起來(lái)成為一個(gè)完整的應(yīng)用程序。軟件設(shè)計(jì)的一般步驟如圖5-2所示。,圖5-2 軟件設(shè)計(jì)步驟,(1) 系統(tǒng)定義系統(tǒng)定義是在進(jìn)行軟件設(shè)計(jì)前明確軟件承擔(dān)的任務(wù),然后結(jié)合硬

8、件結(jié)構(gòu)進(jìn)一步確定軟件所承擔(dān)任務(wù)的細(xì)節(jié)。細(xì)節(jié)如下: 定義說(shuō)明各輸入輸出口的功能,確定信息交換的方式、系統(tǒng)接口方式、占有口地址、讀取和輸出方式等。 在程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器區(qū)域中(注意考慮是否有斷電保護(hù)措施)合理分配存儲(chǔ)空間,包括系統(tǒng)主程序、常數(shù)表格、數(shù)據(jù)暫存區(qū)域、堆棧區(qū)域、入口地址等。 對(duì)面板、控制開(kāi)關(guān)、按鍵等輸入量以及顯示、打印等輸出量也必須給予定義,作為編程的依據(jù)。,(2) 軟件結(jié)構(gòu)設(shè)計(jì)設(shè)計(jì)出合理的軟件結(jié)構(gòu)是設(shè)計(jì)性能優(yōu)良的單片機(jī)應(yīng)用系統(tǒng)軟件的基礎(chǔ)。 常用的程序設(shè)計(jì)方法有3種: 模塊化程序設(shè)計(jì);自頂向下逐步求精程序設(shè)計(jì);結(jié)構(gòu)化程序設(shè)計(jì)。MCS-51應(yīng)用系統(tǒng)的軟件設(shè)計(jì)一般采用模塊化程序設(shè)計(jì)。為了

9、便于編程和調(diào)試,應(yīng)先進(jìn)行軟件結(jié)構(gòu)設(shè)計(jì),根據(jù)系統(tǒng)要求的功能,把軟件分為不同的“模塊”,明確各模塊應(yīng)完成的功能,以及各模塊之間的關(guān)系,主要是要指定哪些任務(wù)由主程序完成,哪些任務(wù)由中斷服務(wù)程序完成,以便進(jìn)行模塊化的程序設(shè)計(jì)。,模塊化程序設(shè)計(jì)是單片機(jī)應(yīng)用系統(tǒng)軟件設(shè)計(jì)中最常用的方法。這種設(shè)計(jì)方法是把一個(gè)完整的程序分成若干個(gè)功能相對(duì)獨(dú)立的較小的程序模塊,各個(gè)程序模塊分別進(jìn)行設(shè)計(jì)、編制程序和調(diào)試,最后將調(diào)試好的程序模塊連接起來(lái)。 模塊程序設(shè)計(jì)的優(yōu)點(diǎn)是: 單個(gè)程序模塊設(shè)計(jì)和調(diào)試比較方便、容易完成,一個(gè)模塊可以被多個(gè)任務(wù)共用。,(3) 建立數(shù)學(xué)模型根據(jù)問(wèn)題的定義,描述出各個(gè)輸入變量和各個(gè)輸出變量之間的數(shù)學(xué)關(guān)系,

10、稱(chēng)為建立數(shù)學(xué)模型。數(shù)學(xué)模型隨系統(tǒng)任務(wù)的不同而不同。例如在直接數(shù)字控制系統(tǒng)中,可采用數(shù)字(proportional integral and differential controller,比例積分與微分控制器)控制算法或其改進(jìn)形式;在測(cè)量系統(tǒng)中,從模擬輸入通道得到的溫度、流量、壓力等現(xiàn)場(chǎng)信息與該信號(hào)對(duì)應(yīng)的實(shí)際值往往存在非線性關(guān)系,需要進(jìn)行非線性補(bǔ)償。,(4) 繪制程序流程圖通常是根據(jù)系統(tǒng)功能及操作過(guò)程和軟件的結(jié)構(gòu),先列出程序的簡(jiǎn)單功能流程圖,再對(duì)該圖進(jìn)行擴(kuò)充和具體化,把簡(jiǎn)單功能流程圖中每一部分轉(zhuǎn)變成具體的存儲(chǔ)單元、寄存器和I/O口的操作,從而繪制出詳細(xì)的程序流程圖。 (5) 編寫(xiě)程序在完成流程

11、圖設(shè)計(jì)以后,依據(jù)流程圖編寫(xiě)程序。,(6) 匯編程序編寫(xiě)完后用開(kāi)發(fā)系統(tǒng)或仿真器的匯編程序?qū)⑺帉?xiě)的用戶(hù)程序匯編成MCS-5l單片機(jī)的機(jī)器碼。 (7) 在線仿真調(diào)試通過(guò)單片機(jī)的開(kāi)發(fā)系統(tǒng),將所編寫(xiě)的程序進(jìn)行在線仿真調(diào)試,完成單片機(jī)應(yīng)用系統(tǒng)的各種功能,完成系統(tǒng)軟件設(shè)計(jì)。,4. 聯(lián)機(jī)在線仿真調(diào)試、修正軟硬件錯(cuò)誤 主要包括用戶(hù)軟件程序的調(diào)試和目標(biāo)系統(tǒng)的硬件調(diào)試。 (1) 用戶(hù)軟件程序的調(diào)試用戶(hù)軟件程序的調(diào)試可分為以下幾個(gè)步驟: 建立用戶(hù)源程序。 在單片機(jī)開(kāi)發(fā)系統(tǒng)上,對(duì)用戶(hù)源程序進(jìn)行編譯,如果編譯有錯(cuò)誤,則要進(jìn)行修改,再進(jìn)行編譯,直至錯(cuò)誤全部糾正為止。, 動(dòng)態(tài)在線調(diào)試。用戶(hù)程序中分為內(nèi)部服務(wù)程序以及與外部的

12、接口程序。內(nèi)部服務(wù)程序是指與用戶(hù)樣機(jī)硬件無(wú)聯(lián)系的用戶(hù)程序,例如計(jì)算程序,雖然經(jīng)編譯后已經(jīng)沒(méi)有語(yǔ)法錯(cuò)誤,但可能有邏輯錯(cuò)誤,必須借助于動(dòng)態(tài)在線調(diào)試手段,如單步運(yùn)行、設(shè)置斷點(diǎn)等,發(fā)現(xiàn)邏輯錯(cuò)誤,然后進(jìn)行修改。對(duì)于外部接口程序,一定要先把硬件故障排除以后,再對(duì)用戶(hù)程序進(jìn)行動(dòng)態(tài)在線調(diào)試,如果有錯(cuò)誤,則進(jìn)行修改。在調(diào)試這一類(lèi)程序時(shí),硬件調(diào)試與軟件調(diào)試是不能完全分開(kāi)的,許多硬件錯(cuò)誤是通過(guò)對(duì)軟件的調(diào)試從而發(fā)現(xiàn)和糾正的。 將調(diào)試完畢的用戶(hù)程序通過(guò)專(zhuān)用編程器固化在EPROM中。,(2) 用戶(hù)樣機(jī)硬件調(diào)試 靜態(tài)調(diào)試。對(duì)用戶(hù)樣機(jī)進(jìn)行調(diào)試,首先要進(jìn)行靜態(tài)調(diào)試,靜態(tài)調(diào)試的目的是排除明顯的硬件故障。 第一步斷電測(cè)量,在樣機(jī)加

13、電之前,先用萬(wàn)用表等工具,根據(jù)硬件電路圖,仔細(xì)檢查樣機(jī)線路是否連接正確,并核對(duì)元器件的型號(hào)、規(guī)格和安裝是否符合要求。應(yīng)特別注意對(duì)電源系統(tǒng)的檢查,以防止電源的短路和極性錯(cuò)誤,并重點(diǎn)檢查系統(tǒng)總線(地址總線、數(shù)據(jù)總線和控制總線)是否存在相互之間的短路或與其他信號(hào)線的短路。,第二步加電后檢查各插件上引腳的電位,仔細(xì)測(cè)量各點(diǎn)電平是否正常、尤其應(yīng)注意8051插座的各點(diǎn)電位。 第三步是在斷電情況下,除CPU外,插上所有的元器件,并把仿真器的仿真插頭插入樣機(jī)上的CPU插座,準(zhǔn)備聯(lián)機(jī)仿真調(diào)試。, 聯(lián)機(jī)仿真、在線動(dòng)態(tài)調(diào)試。在靜態(tài)調(diào)試中,僅對(duì)目標(biāo)樣機(jī)硬件進(jìn)行了初步調(diào)試,只是排除了一些明顯的靜態(tài)故障,而樣機(jī)中的硬件故

14、障(如各部件內(nèi)部存在的故障和部件之間連接的邏輯錯(cuò)誤)主要是靠聯(lián)機(jī)仿真排除的。分別打開(kāi)樣機(jī)和仿真器電源后,便可開(kāi)始聯(lián)機(jī)仿真調(diào)試,排除硬件的故障。 上面已經(jīng)談到,硬件調(diào)試和軟件調(diào)試是不能完全分開(kāi)的,許多硬件錯(cuò)誤是在軟件調(diào)試中發(fā)現(xiàn)和被糾正的。因此,在上面介紹的軟件在線調(diào)試中,也包括聯(lián)機(jī)仿真、硬件在線動(dòng)態(tài)調(diào)試以及硬件故障的排除。,5. 程序固化,系統(tǒng)獨(dú)立運(yùn)行 至此可將用戶(hù)程序固化在程序存儲(chǔ)器中,然后將程序存儲(chǔ)器插入目標(biāo)樣機(jī)系統(tǒng)中,目標(biāo)樣機(jī)系統(tǒng)可獨(dú)立運(yùn)行。目標(biāo)樣機(jī)系統(tǒng)獨(dú)立運(yùn)行一段時(shí)間無(wú)故障后,可認(rèn)為整個(gè)設(shè)計(jì)開(kāi)發(fā)過(guò)程結(jié)束。,單片機(jī)的程序設(shè)計(jì)可以使用機(jī)器語(yǔ)言、單片機(jī)匯編語(yǔ)言和高級(jí)語(yǔ)言三種編程語(yǔ)言。機(jī)器語(yǔ)言是

15、CPU惟一能夠識(shí)別的語(yǔ)言,其他語(yǔ)言必須通過(guò)編譯后形成機(jī)器碼供CPU識(shí)別;匯編語(yǔ)言是單片機(jī)系統(tǒng)設(shè)計(jì)中最常用的程序設(shè)計(jì)語(yǔ)言;高級(jí)語(yǔ)言通用性好,只要單片機(jī)開(kāi)發(fā)系統(tǒng)具有編譯的能力,就可以直接用高級(jí)語(yǔ)言編寫(xiě)程序。MCS-51系列單片機(jī)的編譯型高級(jí)語(yǔ)言有: PL/M51、C-51、MBASIC-51等。,5.2 單片機(jī)匯編程序的編輯方法,可以使用單片機(jī)仿真器提供的軟件包中的編輯器來(lái)編寫(xiě)單片機(jī)程序,也可以使用PC的編輯程序編寫(xiě)程序,例如PC上的EDIT、PE等編輯軟件。然后利用開(kāi)發(fā)系統(tǒng)提供的匯編或編譯系統(tǒng),將源程序編譯成可在目標(biāo)機(jī)上直接運(yùn)行的目標(biāo)程序。該目標(biāo)程序可通過(guò)PC的串行通信接口直接傳送到開(kāi)發(fā)系統(tǒng)的R

16、AM中。本節(jié)主要介紹利用單片機(jī)仿真器進(jìn)行51匯編語(yǔ)言程序的編輯方法。,單片機(jī)應(yīng)用系統(tǒng)本身并無(wú)自開(kāi)發(fā)能力,需要借助于開(kāi)發(fā)工具進(jìn)行軟件編輯、匯編和調(diào)試。目前國(guó)內(nèi)用于MCS-51型單片機(jī)的開(kāi)發(fā)系統(tǒng)很多,偉福E2000系列仿真器屬于新型的專(zhuān)用開(kāi)發(fā)系統(tǒng),本節(jié)內(nèi)容是結(jié)合其軟件包,對(duì)匯編程序的編輯等進(jìn)行說(shuō)明。,5.2.1 偉福仿真器軟件包,源程序的編輯可以在開(kāi)發(fā)系統(tǒng)的軟件包中進(jìn)行。下面以一個(gè)延時(shí)程序?yàn)槔榻B如何在偉福E2000仿真器的軟件包中進(jìn)行源程序的編輯。 (1) 單擊WINDOWS界面的開(kāi)始|程序|WAVE for WINDOWS|wave,進(jìn)入偉福軟件模擬器選擇界面,單擊好進(jìn)入編輯器管理窗口。如圖5

17、-3所示。,5.2.2 匯編源程序的編輯方法,圖5-3 程序編輯器管理窗口,(2) 單擊文件|新建文件或工具欄的新建文件圖標(biāo),進(jìn)入程序編輯器,編輯器自動(dòng)為程序取名為“NONAME1”。 (3) 在編輯器中輸入并修改程序,注意,字符可以大寫(xiě)或小寫(xiě),符號(hào)和特殊字符必須為英文狀態(tài)。 (4) 編輯完成后單擊文件|保存文件或文件|另存文件或工具欄的保存文件圖標(biāo),出現(xiàn)保存對(duì)話框或另存對(duì)話框,輸入文件名TIME1.ASM后,單擊保存按鈕,完成匯編源文件的保存。如圖5-4所示。,圖5-4 存儲(chǔ)窗口,由于單片機(jī)只能執(zhí)行機(jī)器語(yǔ)言的程序(目標(biāo)程序),因此設(shè)計(jì)者將自己的源程序編寫(xiě)好并以擴(kuò)展名ASM保存之后,應(yīng)將源程序

18、編譯成目標(biāo)程序。在編譯過(guò)程中,能夠檢驗(yàn)程序的正確性,并能發(fā)現(xiàn)源程序中的語(yǔ)法錯(cuò)誤和一般性的邏輯錯(cuò)誤,但不能檢查結(jié)構(gòu)上的錯(cuò)誤。如果有錯(cuò)誤,匯編程序會(huì)報(bào)告,指出錯(cuò)誤位置及錯(cuò)誤類(lèi)型。程序錯(cuò)誤被糾正后,要重新進(jìn)行編譯調(diào)試,直至程序匯編無(wú)誤為止。,5.3 源程序的編譯,下面以前面編輯過(guò)的程序TIME1.ASM為例說(shuō)明匯編的過(guò)程: (1) 打開(kāi)已編輯好的源程序TIME1.ASM。 (2) 單擊 項(xiàng)目|編譯或按F9鍵或工具欄的編譯按鈕,如圖5-5所示。,圖5-5 編譯窗口,(3) 編譯器開(kāi)始對(duì)源程序進(jìn)行編譯,如果源程序有錯(cuò)誤,那么當(dāng)編譯到錯(cuò)誤處時(shí),編譯會(huì)中止并出現(xiàn)提示信息窗口,提示出現(xiàn)錯(cuò)誤并報(bào)告錯(cuò)誤類(lèi)型和錯(cuò)誤

19、出現(xiàn)的位置,如圖5-6所示。第一行出現(xiàn)錯(cuò)誤并報(bào)告錯(cuò)誤類(lèi)型為331: 操作數(shù)錯(cuò)。原因就是操作數(shù)的“#”使用的是中文格式的“#”??梢灾苯拥骄庉嫶翱谛薷腻e(cuò)誤,也可以在信息窗口雙擊錯(cuò)誤提示行,自動(dòng)轉(zhuǎn)到錯(cuò)誤程序行處進(jìn)行修改(這對(duì)于較長(zhǎng)的源程序相當(dāng)有用)。,圖5-6 提示信息窗口,(4) 將所有符號(hào)和特殊字符錯(cuò)誤修改完畢后,再重新進(jìn)行編譯,結(jié)果如圖5-7所示。發(fā)現(xiàn)又出現(xiàn)了錯(cuò)誤,第7行出現(xiàn)錯(cuò)誤353:符號(hào)未定義。原因是被調(diào)用的子程序DELAY1不存在,將子程序補(bǔ)上或去掉對(duì)子程序DELAY1的調(diào)用后再進(jìn)行編譯。這時(shí)由于源程序沒(méi)有錯(cuò)誤,將不會(huì)出現(xiàn)信息框,編譯通過(guò)并產(chǎn)生一個(gè)擴(kuò)展名為.HEX和一個(gè)擴(kuò)展名為.LST

20、的文件,并自動(dòng)與源文件放在同一個(gè)目錄下。.HEX文件為目標(biāo)程序文件,可以在調(diào)試后寫(xiě)入程序存儲(chǔ)器,.LST文件為列表文件,將原文件與對(duì)應(yīng)的目標(biāo)文件組合在一起,以備查驗(yàn)。,圖5-7 信息窗口,對(duì)源程序編譯形成目標(biāo)程序,只是排除了語(yǔ)法錯(cuò)誤和一般性的邏輯錯(cuò)誤,只有將目標(biāo)程序應(yīng)用到目標(biāo)樣機(jī)中,經(jīng)過(guò)仿真調(diào)試滿足功能要求才能最后寫(xiě)到程序存儲(chǔ)器中。仿真調(diào)試是對(duì)程序功能是否能實(shí)現(xiàn)所做的最后檢查。,5.4 程序的仿真調(diào)試,對(duì)于模塊結(jié)構(gòu)程序,要逐個(gè)模塊分別調(diào)試。調(diào)試模塊時(shí),一定要符合現(xiàn)場(chǎng)環(huán)境,即符合入口條件和出口條件。調(diào)試的手段可采用單步運(yùn)行方式和斷點(diǎn)運(yùn)行方式,通過(guò)檢查用戶(hù)系統(tǒng)CPU內(nèi)部資源狀態(tài)、RAM的內(nèi)容和I/

21、O口的狀態(tài),檢查程序執(zhí)行結(jié)果是否符合設(shè)計(jì)要求。,5.4.1 仿真調(diào)試的一般步驟,通過(guò)檢查,可以發(fā)現(xiàn)程序中的死循環(huán)錯(cuò)誤、轉(zhuǎn)移地址錯(cuò)誤、用戶(hù)系統(tǒng)中的硬件故障、軟件算法及硬件設(shè)計(jì)的錯(cuò)誤。在調(diào)試過(guò)程中不斷調(diào)整用戶(hù)系統(tǒng)的軟件和硬件,逐步通過(guò)各個(gè)程序模塊。各程序模塊通過(guò)后,可以把有關(guān)的功能模塊聯(lián)合起來(lái)一起進(jìn)行整體程序的綜合調(diào)試。若在這階段發(fā)生故障,可以考慮各子程序在運(yùn)行時(shí)是否破壞現(xiàn)場(chǎng)、緩沖單元是否發(fā)生沖突、標(biāo)志位的建立和清除在設(shè)計(jì)上是否有失誤、堆棧區(qū)域是否有溢出、輸入設(shè)備的狀態(tài)是否正常,等等。,單步和斷點(diǎn)調(diào)試后,還應(yīng)進(jìn)行程序連續(xù)運(yùn)行調(diào)試。這是因?yàn)閱尾竭\(yùn)行只能檢驗(yàn)程序的正確與否,而不能確定定時(shí)精度和CPU的

22、實(shí)時(shí)響應(yīng)等問(wèn)題。待全部調(diào)試完成后,應(yīng)反復(fù)運(yùn)行多次。此時(shí),除了觀察穩(wěn)定性外,還要觀察用戶(hù)系統(tǒng)的操作是否符合原始設(shè)計(jì)要求以及安排的用戶(hù)操作是否合理等,必要時(shí)還要作適當(dāng)修正。,實(shí)時(shí)多任務(wù)控制系統(tǒng)的調(diào)試方法與上述方法有很多相似之處,只是實(shí)時(shí)多任務(wù)控制系統(tǒng)的應(yīng)用程序是由若干個(gè)任務(wù)程序組成,一般是逐個(gè)任務(wù)進(jìn)行調(diào)試。在調(diào)試某一個(gè)任務(wù)時(shí),同時(shí)也調(diào)試相關(guān)的子程序、中斷服務(wù)程序和一些操作系統(tǒng)的程序。逐個(gè)任務(wù)調(diào)試好以后,再使各個(gè)任務(wù)同時(shí)運(yùn)行。如果控制系統(tǒng)中沒(méi)有錯(cuò)誤,一般情況下系統(tǒng)就能正常運(yùn)轉(zhuǎn)。,偉福仿真器提供兩種仿真調(diào)試手段: 一是軟件模擬仿真,即不需要仿真器而只通過(guò)軟件包對(duì)程序進(jìn)行模擬仿真調(diào)試;二是硬件仿真,即通

23、過(guò)仿真器直接對(duì)目標(biāo)樣機(jī)進(jìn)行硬件、程序進(jìn)行仿真調(diào)試。對(duì)程序進(jìn)行仿真調(diào)試時(shí),這兩種方法的使用是一樣的。下面以利用例6-9將“F”和“E”轉(zhuǎn)換為ASCII碼并存放在內(nèi)部RAM的25H、26H的程序?yàn)槔f(shuō)明仿真調(diào)試的一般步驟: (1) 編寫(xiě)程序并以TRANS1.ASM保存。 (2) 匯編、修改直至匯編無(wú)誤后如圖5-8所示,這時(shí)可直接進(jìn)行仿真調(diào)試。,圖5-8 正確編譯結(jié)果,(3) 也可以單擊文件|調(diào)入目標(biāo)文件將目標(biāo)程序加載到軟件包,這時(shí)就可以進(jìn)行模擬仿真調(diào)試了。從圖5-9可以看出,進(jìn)行仿真調(diào)試時(shí),在狀態(tài)欄中可觀察PC、DPTR、A、PSW、SP中的值的變化,還可觀察執(zhí)行至當(dāng)前指令所用的時(shí)間。 (4)

24、利用單步或跟蹤逐條執(zhí)行程序,并觀察內(nèi)部RAM、各寄存器、定時(shí)器以及外部口線的狀態(tài)值是否正確。觀察狀態(tài)可以利用狀態(tài)欄的顯示、CPU窗口顯示或數(shù)據(jù)窗口的顯示進(jìn)行,如圖5-9所示。在CPU窗口或程序窗口中的任意一行中單擊鼠標(biāo)左鍵,則立即顯示出該行程序中操作數(shù)的地址和內(nèi)容或程序轉(zhuǎn)移的地址。,圖5-9 加載窗口,(5) 設(shè)置一系列斷點(diǎn),然后運(yùn)行程序,看程序能否正常地運(yùn)行至斷點(diǎn)處,同時(shí)觀察RAM、各寄存器、定時(shí)器和外部口線的狀態(tài)是否正確。斷點(diǎn)一般設(shè)置在跳轉(zhuǎn)指令、跳轉(zhuǎn)目的處指令、子程序入口、返回指令以及對(duì)程序的運(yùn)行有重要影響的指令處。斷點(diǎn)的設(shè)置情況如圖5-10所示。,圖5-10 斷點(diǎn)設(shè)置,(6) 在上面步驟完畢后,單擊執(zhí)行|全速執(zhí)行,全速運(yùn)行程序以觀察定時(shí)器和計(jì)數(shù)器的工作是否符合要求。,現(xiàn)對(duì)偉福仿真器軟件包的仿真命令說(shuō)明如下: 在模擬軟件仿真器窗口中單擊執(zhí)行按鈕,出現(xiàn)如圖5-11所示的下拉菜單。在菜單中單擊相應(yīng)選項(xiàng)則執(zhí)行相應(yīng)的操作。,5.4.2 仿真調(diào)試的一般命令,圖5-11 執(zhí)行菜單,各操作項(xiàng)目的含義

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論