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