你了解MCS 51 應(yīng)用系統(tǒng)的調(diào)試過(guò)程嗎
掃描二維碼
隨時(shí)隨地手機(jī)看文章
在完成應(yīng)用系統(tǒng)的硬件組裝和軟件設(shè)計(jì)以后,便進(jìn)入系統(tǒng)調(diào)試階段。這個(gè)階段的任務(wù)是排除樣機(jī)中的硬件故 障和糾正軟件中的設(shè)計(jì)錯(cuò)誤,并解 決硬件和軟件之間的不協(xié)調(diào)問(wèn)題 。下面介紹幾種調(diào)試方法。
一、硬件調(diào)試方法
單片機(jī)系統(tǒng)的硬件調(diào)試和軟件調(diào)試是不能完全分開(kāi)的,許多硬件錯(cuò)誤是在軟件調(diào)試中被發(fā)現(xiàn)和糾正的。但通常是先排除明顯的硬件故障以后,再和軟件結(jié)合起來(lái)調(diào)試。硬件調(diào)試方法有兩種:靜態(tài)調(diào)試和仿真調(diào)試。
1.靜態(tài)調(diào)試
在樣機(jī)加電之前,先用萬(wàn)用表等工具,根據(jù)硬件邏輯設(shè)計(jì)詳細(xì)檢查樣機(jī)線路的正確性,核對(duì)元器件的型號(hào)、規(guī)格和安裝是否符合要求。應(yīng)特別注意電源系統(tǒng)的檢查,以防止電源短路和極性錯(cuò)誤。并重點(diǎn)檢查系統(tǒng)總線是否存在相互之間短路或與其它信號(hào)線的短路。
第一步是加電后檢查各插件上引腳的電位,一般先檢查 VCC 與 GND 之間電位,若在 5V 左右屬正常。若出現(xiàn)高壓,聯(lián)機(jī)仿真調(diào)試時(shí),會(huì)損壞仿真器等,有時(shí)會(huì)使應(yīng)用系統(tǒng)的集成塊發(fā)熱損壞。
第二步是在斷電情況下,除 CPU 之外,插上所有元器件,仿真插頭插入樣機(jī) CPU 插座,并和仿真機(jī)相連,用萬(wàn)用表檢查連接的正確性后,準(zhǔn)備聯(lián)機(jī)仿真調(diào)試。連接圖見(jiàn)圖 8.2 。
圖 8.2 應(yīng)用系統(tǒng)連接仿真器開(kāi)發(fā)系統(tǒng)簡(jiǎn)圖
2.聯(lián)機(jī)仿真調(diào)試
電路檢查無(wú)誤后,分別打開(kāi)樣機(jī)和仿真器的工作電源,啟動(dòng) MBUG 進(jìn)入監(jiān)控狀態(tài),就 可進(jìn)行聯(lián)機(jī)仿真調(diào)試了。
調(diào)試的方案是:把整個(gè)應(yīng)用系統(tǒng)按其功能分成若干模塊,如系統(tǒng)擴(kuò)展模塊:輸入模塊、 輸出模塊、A/D 模塊、D/A 模塊等。針對(duì)不同的功能模塊,編寫一小段測(cè)試程序,并借助 于萬(wàn)用表、示波器、邏輯筆等儀器來(lái)檢查硬件電路的正確性。
二、軟件調(diào)試方法
軟件調(diào)試可以一個(gè)模塊一個(gè)模塊地進(jìn)行,下面給出一些常見(jiàn)的故障情況。
1.程序跳轉(zhuǎn)錯(cuò)
這種錯(cuò)誤的現(xiàn)象是程序運(yùn)行不到指定的地方,或發(fā)生死循環(huán),通常是由于錯(cuò)用了指令 或設(shè)錯(cuò)了標(biāo)號(hào),如:
這段程序的目的是為了延遲一段時(shí)間,由于 INC A 指令執(zhí)行后的結(jié)果不影響任何標(biāo)志,所以 JNCLP1 這條指令執(zhí)行后總是轉(zhuǎn)跳到 LP1 ,結(jié)果發(fā)生了死循環(huán)??蓪?JNCLP1 改 為:CJNE A ,#00H ,LP1 。
2.程序錯(cuò)誤
對(duì)于計(jì)算程序,經(jīng)過(guò)反復(fù)測(cè)試后,才能驗(yàn)證它的正確性 。例如調(diào)試一個(gè)雙字節(jié)十進(jìn)制加法程序,該子程序的功能是將 31H 、30H 和 33H 、32H 單元 內(nèi) 的 BCD 碼相加 ,結(jié)果送 34H 、33H 、32H 單元。
調(diào)試這個(gè)程序時(shí),先將加數(shù)寫入 8031 的 30H ~ 33H 單元內(nèi),然后設(shè)置斷點(diǎn)至 LOOP2,以 STRT 開(kāi)始進(jìn)行這個(gè)程序至斷點(diǎn),觀察 34H~32H 的內(nèi)容是否正確。若存在錯(cuò)誤,再用單步方式從 STRT 開(kāi)始逐條運(yùn)行指令,并不斷觀察 8031 的狀態(tài)變化,進(jìn)一步查出錯(cuò)誤原因。
3.動(dòng)態(tài)錯(cuò)誤
用單步、斷點(diǎn)仿真運(yùn)行命令,一般只能測(cè)試目標(biāo)系統(tǒng)的靜態(tài)功能。目標(biāo)系統(tǒng)的動(dòng)態(tài)性能要用全速仿真命令來(lái)測(cè)試,這時(shí)應(yīng)選中目標(biāo)機(jī)中晶振電路工作。
系統(tǒng)的動(dòng)態(tài)性能范圍很廣,如控制系統(tǒng)的實(shí)時(shí)響應(yīng)速度、顯示器的亮度、定時(shí)器的精度等等。若動(dòng)態(tài)性能沒(méi)有達(dá)到系統(tǒng)設(shè)計(jì)的指標(biāo),有的是 由于元器件速度不夠造成的;更多的是由于多個(gè)任務(wù)之間的關(guān)系處理不恰當(dāng)引起的。
4.加電復(fù)位電路的錯(cuò)誤
排除硬件和軟件故障后,將 EPROM 和 CPU 插上目標(biāo)系統(tǒng),若能正常運(yùn)行,應(yīng)用系統(tǒng)的開(kāi)發(fā)研制便完成。若目標(biāo)機(jī)工作不正常,則主要是加電復(fù)位電路出現(xiàn)故障造成的。如 8031 沒(méi)有被初始復(fù)位,則 PC 不是從 0000H 開(kāi)始運(yùn)行,故系統(tǒng)不會(huì)正常運(yùn)行,必須及時(shí)檢查加電復(fù)位電路。