當(dāng)需要清0操作的字節(jié)單元的個數(shù)增加時,程序中MOV指令的個數(shù)也會隨之增加。為了降低程序中重復(fù)代碼的數(shù)量,縮短程序的長度,可以采用循環(huán)程序結(jié)構(gòu)進行程序設(shè)計。
分支結(jié)構(gòu)程序的指令執(zhí)行順序與指令在ROM中的存放順序不同,其中某些具有判斷功能的指令會根據(jù)判斷結(jié)果改變接下來的指令執(zhí)行順序,從而使程序產(chǎn)生一個或多個分支流向。可用于分支結(jié)構(gòu)程序設(shè)計的判斷指令主要包括JZ、CJNE和JB等有條件轉(zhuǎn)移指令。根據(jù)程序分支的數(shù)量,可以將分支程序分為三類:單分支、一般多分支和散轉(zhuǎn)多分支。
目前,結(jié)構(gòu)化是程序設(shè)計的基本要求,可以使程序結(jié)構(gòu)清晰、易于讀寫且方便調(diào)試,也能夠提高程序設(shè)計的效率。在結(jié)構(gòu)化程序設(shè)計中,程序的基本結(jié)構(gòu)有三種,即順序結(jié)構(gòu)、分支結(jié)構(gòu)及循環(huán)結(jié)構(gòu)。而子程序(也被稱為函數(shù)或過程)是一種提高程序模塊化程度和重復(fù)利用率的程序設(shè)計技巧,有時也被當(dāng)作一種基本的程序結(jié)構(gòu)。
AT89C2051單片機內(nèi)部有2KB的閃速存儲器陣列,一片新的AT89C2051,其存儲陣列處于擦除狀態(tài)(FFH),此時可對其編程,存儲陣列一次編程1字節(jié),若編程任何非空字節(jié)時,需對整個存儲陣列進行片擦除。
AT89C系列與MCS 51系列單片機相比有兩大優(yōu)勢:第一,片內(nèi)程序存儲器采用閃速存儲器,使程序的寫入更加方便;第二,提供了更小尺寸的芯片(AT89C2051/1051),使整個硬件電路的體積更小。
前面列舉的各項措施只解決了如何發(fā)現(xiàn)系統(tǒng)受到干擾和如何捕捉“跑飛”的程序,但僅此還不夠,還要能夠讓單片機根據(jù)被破壞的殘留信息自動恢復(fù)到正常的工作狀態(tài)。硬件復(fù)位是使單片機重新恢復(fù)正常工作狀態(tài)的一個簡單有效的方法。硬件復(fù)位后CPU被重新初始化,所有被激活的中斷標(biāo)志都被清除,程序從0000H地址重新開始執(zhí)行。
前面幾項抗干擾措施都是針對I/O通道而言的。若干擾信號還未作用到CPU本身,則CPU還能正確地執(zhí)行各種抗干擾程序;若干擾信號已經(jīng)通過某種途徑作用到CPU上,則CPU就不能按正常狀態(tài)執(zhí)行程序,從而引起混亂,這就是通常所說的程序“跑飛”。程序“跑飛”后使其恢復(fù)正常最簡單的方法是讓CPU復(fù)位,讓程序從頭開始重新運行。這種方法雖然簡單,但需要人的參與,而且復(fù)位不及時。人工復(fù)位一般是在整個系統(tǒng)已經(jīng)癱瘓,無計可施的情況下才不得已而為之的。因此在進行軟件設(shè)計時就要考慮到萬一程序“跑
由于數(shù)字量輸入過程中干擾的作用時間較短,因此在采集數(shù)字信號時,可多次重復(fù)采集,直到若干次采樣結(jié)果一致時,才認為其有效。例如通過A/D轉(zhuǎn)換器測量各種模擬量時,如果有干擾作用于模擬信號上,就會使A/D轉(zhuǎn)換結(jié)果偏離真實值。這時如果只采樣一次A/D轉(zhuǎn)換結(jié)果,就無法知道其是否真實可靠,而必須進行多次采樣,得到一個A/D轉(zhuǎn)換結(jié)果的數(shù)據(jù)系列,對這些數(shù)據(jù)系列進行各種數(shù)字濾波處理,最后才能得到一個可信度較高的結(jié)果值。
8XC51系列單片機是Intel公司生產(chǎn)的8位增強型單片機,它是以80C51為核心的一種8位微控制器,也是一種面向事件控制應(yīng)用的優(yōu)選芯片,它與現(xiàn)有MCS 51系列單片機的指令系統(tǒng)兼容,下面以8XC51GB為代表對8XC51系列單片機作一簡要闡述。
開關(guān)量輸入/輸出通道和模擬量輸入/輸出通道,都是干擾竄入的渠道,要切斷這些渠道,就要去掉外部與輸入/輸出通道之間的公共地線,實現(xiàn)彼此電氣隔離以抑制干擾脈沖。最常用的隔離器是光電耦合器,其內(nèi)部結(jié)構(gòu) 圖 9.5(a), 圖 9.5(b) 為接入光電耦合器的數(shù)字電路。
從事單片機應(yīng)用的開發(fā)人員都有過這樣的經(jīng)歷:將調(diào)試好的樣機投入現(xiàn)場進行實際運行時,總會出現(xiàn)這樣或那樣的問題。有的一開機就失靈,有的時好時壞,讓人不知所措。為什么實驗室能正常工作,到了現(xiàn)場就有問題呢? 主要原因是系統(tǒng)沒有采取抗干擾措施,或措施不力。為此,本文專門介紹單片機應(yīng)用系統(tǒng)的抗干擾技術(shù),以增強產(chǎn)品在實際環(huán)境中的生存能力。
在完成應(yīng)用系統(tǒng)的硬件組裝和軟件設(shè)計以后,便進入系統(tǒng)調(diào)試階段。這個階段的任務(wù)是排除樣機中的硬件故 障和糾正軟件中的設(shè)計錯誤,并解 決硬件和軟件之間的不協(xié)調(diào)問題 。下面介紹幾種調(diào)試方法。
單片機以其體積小、重量輕、價格低及功能強等特點得到了廣泛的應(yīng)用,但單片機上一般僅集成 CPU 、RAM 和 I/O 接口,而無用戶接口 (鍵盤和顯示器) 及監(jiān)控程序,因而單片機自身無編程功能,必須依賴單片機開發(fā)工具(又稱單片機仿真器)。單片機開發(fā)工具有輸入程序、編輯程序和調(diào)試程序的功能,目前國內(nèi)使用較多的有 WAVE 、KeilC、MedWin 等,在此就 WAVE 仿真器作一簡介。
共模干擾指的是干擾電壓在信號線及其回線(一般稱為信號地線)上的幅度相同,這里的電壓以附近任何一個物體(大地、金屬機箱、參考地線板等)為參考電位,干擾電流回路則是在導(dǎo)線與參考物體構(gòu)成的回路中流動。
單片機應(yīng)用系統(tǒng)的設(shè)計與開發(fā)主要包括五部分內(nèi)容:方案論證,硬件系統(tǒng)的設(shè)計,系統(tǒng)軟件的設(shè)計,系統(tǒng)仿真調(diào)試和脫機運行。各部分詳細內(nèi)容如圖 8.1 所示。