版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第7章MCS-51單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)主要內(nèi)容:
從總體設(shè)計(jì)、硬件設(shè)計(jì)、軟件設(shè)計(jì)、可靠性設(shè)計(jì)、系統(tǒng)調(diào)試與測試等幾個方面介紹了單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)的方法及基本過程,并給出了典型設(shè)計(jì)實(shí)例,同時(shí)還簡單介紹了C51編程方法和KeilC51開發(fā)系統(tǒng)。重點(diǎn)在于單片機(jī)應(yīng)用系統(tǒng)開發(fā)的方法與實(shí)際應(yīng)用,難點(diǎn)在于將單片機(jī)應(yīng)用系統(tǒng)開發(fā)的方法應(yīng)用于實(shí)際工程中,設(shè)計(jì)出最優(yōu)的單片機(jī)應(yīng)用系統(tǒng)。7.1概述
由于單片機(jī)具有體積小、功耗低、功能強(qiáng)、可靠性高、實(shí)時(shí)性強(qiáng)、簡單易學(xué)、使用方便靈巧、易于維護(hù)和操作、性能價(jià)格比高、易于推廣應(yīng)用、可實(shí)現(xiàn)網(wǎng)絡(luò)通信等技術(shù)特點(diǎn)。因此,單片機(jī)在自動化裝置、智能儀表、家用電器,乃至數(shù)據(jù)采集、工業(yè)控制、計(jì)算機(jī)通信、汽車電子、機(jī)器人等領(lǐng)域得到了日益廣泛的應(yīng)用。單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)應(yīng)當(dāng)考慮其主要技術(shù)性能(速度精度功耗可靠性驅(qū)動能力等),還應(yīng)當(dāng)考慮功能需求,應(yīng)用需求,開發(fā)條件,市場情況,可靠性需求,成本需求,盡量以軟件代替硬件等。下頁圖描述了單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)的一般過程。(2)外圍器件的選擇
外圍器件應(yīng)符合系統(tǒng)的精度、速度和可靠性、功耗、抗干擾等方面的要求。應(yīng)考慮功耗、電壓、溫度、價(jià)格、封裝形式等其他方面的指標(biāo),應(yīng)盡可能選擇標(biāo)準(zhǔn)化、模塊化、功能強(qiáng)、集成度高的典型電路。3.總體設(shè)計(jì)
總體設(shè)計(jì)就是根據(jù)設(shè)計(jì)任務(wù)、指標(biāo)要求和給定條件,設(shè)計(jì)出符合現(xiàn)場條件的軟、硬件方案。并進(jìn)行方案優(yōu)化。應(yīng)劃分硬件、軟件任務(wù),畫出系統(tǒng)結(jié)構(gòu)框圖。要合理分配系統(tǒng)內(nèi)部的硬件、軟件資源。包括以下幾個方面:
(1)從系統(tǒng)功能需求出發(fā)設(shè)計(jì)功能模塊。包括顯示器、鍵盤、數(shù)據(jù)采集、檢測、通信、控制、驅(qū)動、供電方式等(2)從系統(tǒng)應(yīng)用需求分配元器件資源。包括定時(shí)器/計(jì)數(shù)器、中斷系統(tǒng)、串行口、I/O接口、A/D、D/A、信號調(diào)理、時(shí)鐘發(fā)生器等。(3)從開發(fā)條件與市場情況出發(fā)選擇元器件。包括仿真器、編程器、元器件、語言、程序設(shè)計(jì)的簡易等。(4)從系統(tǒng)可靠性需求確定系統(tǒng)設(shè)計(jì)工藝。包括去耦、光隔、屏蔽、印制板、低功耗、散熱、傳輸距離/速度、節(jié)電方式、掉電保護(hù)、軟件措施等。7.2.2硬件設(shè)計(jì)
由總體設(shè)計(jì)所給出的硬件框圖所規(guī)定的硬件功能,在確定單片機(jī)類型的基礎(chǔ)上進(jìn)行硬件設(shè)計(jì)、實(shí)驗(yàn)。進(jìn)行必要的工藝結(jié)構(gòu)設(shè)計(jì),制作出印刷電路板,組裝后即完成了硬件設(shè)計(jì)。一個單片機(jī)應(yīng)用系統(tǒng)的硬件設(shè)計(jì)包含系統(tǒng)擴(kuò)展和系統(tǒng)的配置(按照系統(tǒng)功能要求配置外圍設(shè)備)兩部分。1.硬件電路設(shè)計(jì)的一般原則(1)采用新技術(shù),注意通用性,選擇典型電路。(2)向片上系統(tǒng)(SOC)方向發(fā)展。擴(kuò)展接口盡可能采用PSD等器件。(3)注重標(biāo)準(zhǔn)化、模塊化。(4)滿足應(yīng)用系統(tǒng)的功能要求,并留有適當(dāng)余地,以便進(jìn)行二次開發(fā)。(5)工藝設(shè)計(jì)時(shí)要考慮安裝、調(diào)試、維修的方便。2.硬件電路各模塊設(shè)計(jì)的原則
單片機(jī)應(yīng)用系統(tǒng)的一般結(jié)構(gòu)如下圖所示。各模塊電路設(shè)計(jì)時(shí)應(yīng)考慮以下幾個方面:(1)存儲器擴(kuò)展:類型、容量、速度和接口,盡量減少芯片的數(shù)量。(2)I/O接口的擴(kuò)展:體積、價(jià)格、負(fù)載能力、功能,合適的地址譯碼方法。
(8)負(fù)載容限:總線驅(qū)動。(9)信號邏輯電平兼容性:電平兼容和轉(zhuǎn)換。(10)電源系統(tǒng)的配置:電源的組數(shù)、輸出功率、抗干擾。(11)抗干擾的實(shí)施:芯片、器件選擇、去耦濾波、印刷電路板布線、通道隔離等。7.2.3軟件設(shè)計(jì)
軟件設(shè)計(jì)流程圖如右圖所示??煞譃橐韵聨讉€方面。1.總體規(guī)劃
結(jié)合硬件結(jié)構(gòu),明確軟件任務(wù),確定具體實(shí)施的方法,合理分配資源。定義輸入/輸出、確定信息交換的方式(數(shù)據(jù)速率、數(shù)據(jù)格式、校驗(yàn)方法、狀態(tài)信號等)、時(shí)間要求,檢查與糾正錯誤。2.程序設(shè)計(jì)技術(shù)
軟件結(jié)構(gòu)實(shí)現(xiàn)結(jié)構(gòu)化,各功能程序?qū)嵭心K化、子程序化。一般有以下兩種設(shè)計(jì)方法:(1)模塊程序設(shè)計(jì):優(yōu)點(diǎn)是單個功能明確的程序模塊的設(shè)計(jì)和調(diào)試比較方便,容易完成,一個模塊可以為多個程序所共享。其缺點(diǎn)是各個模塊的連接有時(shí)有一定難度。(2)自頂向下的程序設(shè)計(jì):優(yōu)點(diǎn)是比較符合于人們的日常思維,設(shè)計(jì)、調(diào)試和連接同時(shí)按一個線索進(jìn)行,程序錯誤可以較早的發(fā)現(xiàn)。缺點(diǎn)是上一級的程序錯誤將對整個程序產(chǎn)生影響,一處修改可能引起對整個程序的全面修改。3.程序設(shè)計(jì)
(1)建立數(shù)學(xué)模型:描述出各輸入變量和各輸出變量之間的數(shù)學(xué)關(guān)系。(2)繪制程序流程圖:以簡明直觀的方式對任務(wù)進(jìn)行描述。(3)程序的編制:選擇語數(shù)據(jù)結(jié)構(gòu)、控制算法、存儲空間分配,系統(tǒng)硬件資源的合理分配與使用,子程序的入/出口參數(shù)的設(shè)置與傳遞。4.軟件裝配
各程序模塊編輯之后,需進(jìn)行匯編或編譯、調(diào)試,當(dāng)滿足設(shè)計(jì)要求后,將各程序模塊按照軟件結(jié)構(gòu)設(shè)計(jì)的要求連接起來,即為軟件裝配。在軟件裝配時(shí),應(yīng)注意軟件接口。1.供電系統(tǒng)干擾與抑制干擾源:電源及輸電線路的內(nèi)阻、分布電容和電感等??垢蓴_措施:采用交流穩(wěn)壓器、電源低通濾波器、帶屏蔽層的隔離變壓器、獨(dú)立的(或?qū)I(yè)的)直流穩(wěn)壓模塊,交流引線應(yīng)盡量短,主要集成芯片的電源采用去耦電路,增大輸入/輸出濾波電容等措施。2.過程通道的干擾與抑制干擾源:長線傳輸。單片機(jī)應(yīng)用系統(tǒng)中,從現(xiàn)場信號輸出的開關(guān)信號或從傳感器輸出的微弱模擬信號,經(jīng)傳輸線送入單片機(jī),信號在傳輸線上傳輸時(shí),會產(chǎn)生延時(shí)、畸變、衰減及通道干擾。抗干擾措施:(1)采用隔離技術(shù):光電隔離、變壓器隔離、繼電器隔離和布線隔離等。典型的信號隔離是光電隔離。其優(yōu)點(diǎn)是能有效地抑制尖峰脈沖及各種噪聲干擾,從而使過程通道上的信噪比大大提高。(2)采用屏蔽措施:金屬盒罩、金屬網(wǎng)狀屏蔽線。但金屬屏蔽本身必須接真正的地(保護(hù)地)。
(3)采用雙絞線傳輸:雙絞線能使各個小環(huán)路的電磁感應(yīng)干抗相互抵消。其特點(diǎn)是波阻抗高、抗共模噪聲能力強(qiáng),但頻帶較差。(4)采用長線傳輸?shù)淖杩蛊ヅ洌河兴姆N形式,如下圖所示。
①
終端并聯(lián)阻抗匹配:如上頁圖(a)所示,RP=R1//R2,其特點(diǎn)是終端阻值低,降低了高電平的抗干擾能力。②始端串聯(lián)匹配:如上頁圖(b)所示,匹配電阻R的取值為RP與A門輸出低電平的輸出阻抗ROUT(約20)之差值,其特點(diǎn)是終端的低電平抬高,降低了低電平的抗干擾能力。③終端并聯(lián)隔直流匹配:如圖上頁(c)所示,R=Rp,其特點(diǎn)是增加了對高電平的抗干擾能力。④終端接鉗位二極管匹配:如圖上頁(d)所示,利用二極管D把B門輸入端低電平鉗位在0.3V以下。其特點(diǎn)是減少波的反射和振蕩,提高動態(tài)抗干擾能力。注意:長線傳輸時(shí),用電流傳輸代替電壓傳輸,可獲得較好的抗干擾能力。(3)機(jī)械觸點(diǎn),接觸器、可控硅的噪聲抑制
①開關(guān)、按鈕、繼電器觸點(diǎn)等在操作時(shí)應(yīng)采取去抖處理。②在輸入/輸出通道中使用接觸器、繼電器時(shí),應(yīng)在線圈兩端并接噪聲抑制器,繼電器線圈處要加裝放電二極管。③可控硅兩端并接RC抑制電路,可減小可控硅產(chǎn)生的噪聲。(4)印刷電路板(PCB)設(shè)計(jì)中的抗干擾問題
合理選擇PCB板的層數(shù),大小要適中,布局、分區(qū)應(yīng)合理,把相互有關(guān)的元件盡量放得靠近一些。印刷導(dǎo)線的布設(shè)應(yīng)盡量短而寬,盡量減少回路環(huán)的面積,以降低感應(yīng)噪聲。導(dǎo)線的布局應(yīng)當(dāng)是均勻的、分開的平行直線,以得到一條具有均勻波阻抗的傳輸通路。應(yīng)盡可能地減少過孔的數(shù)量。在PCB板的各個關(guān)鍵部位應(yīng)配置去耦電容。要將強(qiáng)、弱電路嚴(yán)格分開,盡量不要把它們設(shè)計(jì)在一塊印刷電路板上。電源線的走向應(yīng)盡量與數(shù)據(jù)傳遞方向一致,電源線、地線應(yīng)盡量加粗,以減小阻抗。(5)地線設(shè)計(jì)
地線結(jié)構(gòu)大致有保護(hù)地、系統(tǒng)地、機(jī)殼地(屏蔽地)、數(shù)字地、模擬地等。在設(shè)計(jì)時(shí),數(shù)字地和模擬地要分開,分別與電源端地線相連;屏蔽線根據(jù)工作頻率可采用單點(diǎn)接地或多點(diǎn)接地;保護(hù)地的接地是指接大地。不能把接地線與動力線的零線混淆。此外,應(yīng)提高元器件的可靠性,注意各電路之間的電平匹配,總線驅(qū)動能力要符合要求,單片機(jī)的空閑端要接地或接電源,或者定義成輸出。室外使用的單片機(jī)系統(tǒng)或從室外架空引入室內(nèi)的電源線、信號線,要防止雷擊,常用的防雷擊器件有:氣體放電管,TVS(瞬態(tài)電壓抑制器)等。4.軟件的抗干擾設(shè)計(jì)
常用的軟件抗干擾技術(shù)有軟件陷阱、時(shí)間冗余、指令冗余、空間冗余、容錯技術(shù)、設(shè)置特征標(biāo)志和軟件數(shù)字濾波等(1)實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)的軟件抗干擾
采用軟件數(shù)字濾波。常用的方法有以下幾種:①
算術(shù)平均值法:對一點(diǎn)數(shù)據(jù)連續(xù)采樣多次(可取3~5次),以平均值作為該點(diǎn)的采樣結(jié)果。這種方法可以減少系統(tǒng)的隨機(jī)干擾對采集結(jié)果的影響。②比較舍取法:對每個采樣點(diǎn)連續(xù)采樣幾次,根據(jù)所采樣數(shù)據(jù)的變化規(guī)律,確定取舍辦法來剔除偏差數(shù)據(jù)。例如,“采三取二”,即對每個采樣點(diǎn)連續(xù)采樣三次,取兩次相同數(shù)據(jù)作為采樣結(jié)果。③中值法:對一個采樣點(diǎn)連續(xù)采集多個信號,并對這些采樣值進(jìn)行比較,取中值作為該點(diǎn)的采樣結(jié)果。
5.程序運(yùn)行失常的軟件對策程序運(yùn)行失常:當(dāng)系統(tǒng)受到干擾侵害,致使程序計(jì)數(shù)器PC值改變,造成程序的無序運(yùn)行,甚至進(jìn)入死循環(huán)。程序運(yùn)行失常的軟件對策:發(fā)現(xiàn)失常狀態(tài)后,及時(shí)引導(dǎo)系統(tǒng)恢復(fù)原始狀態(tài)??刹捎靡韵路椒ǎ海?)程序監(jiān)視定時(shí)器(Watchdag,WDT)技術(shù)
程序監(jiān)視定時(shí)器(也稱為“看門狗”)的作用:通過不斷監(jiān)視程序每周期的運(yùn)行事件是否超過正常狀態(tài)下所需要的時(shí)間,從而判斷程序是否進(jìn)入了“死循環(huán)”,并對進(jìn)入“死循環(huán)”的程序作出系統(tǒng)復(fù)位處理?!翱撮T狗”技術(shù):可由硬件、軟件或軟硬結(jié)合實(shí)現(xiàn)。①硬件“看門狗”可以很好地解決主程序陷入死循環(huán)的故障,但是,嚴(yán)重的干擾有時(shí)會出現(xiàn)中斷關(guān)閉故障使系統(tǒng)無法定時(shí)“喂狗”,無法探測到這種故障,硬件“看門狗”電路失效。
表2-5工作寄存器組選擇控制表
②軟件“看門狗”可以保證對中斷關(guān)閉故障的發(fā)現(xiàn)和處理,但若單片機(jī)的死循環(huán)發(fā)生在某個高優(yōu)先級的中斷服務(wù)程序中,軟件“看門狗”也無法完成其作用。③利用軟硬結(jié)合的“看門狗”組合可以克服單一“看門狗”功能的缺陷,從而實(shí)現(xiàn)對故障的全方位監(jiān)控。(2)設(shè)置軟件陷阱軟件陷阱:指將捕獲的“跑飛”程序引向復(fù)位入口地址0000H的指令。
設(shè)置方法:
①在EPROM中,非程序區(qū)設(shè)置軟件陷阱,軟件陷阱一般1KB空間有2~3個就可以進(jìn)行有效攔截。指令如下:
NOPNOPLJMP0000H
②在未使用的中斷服務(wù)程序中設(shè)置軟件陷阱,能及時(shí)捕獲錯誤的中斷。指令如下:
NOPNOPRETI(3)指令冗余技術(shù)指令冗余:在程序的關(guān)鍵地方人為插入一些單字節(jié)指令,或?qū)⒂行巫止?jié)指令重寫,稱為指令冗余。作用:可將“跑飛”程序納入正軌。
設(shè)置方法:通常是在雙字節(jié)指令和三字節(jié)指令后插入兩個字節(jié)以上的NOP。這樣即使程序“跑飛”到操作數(shù)上,由于空操作指令NOP的存在,避免了后面的指令被當(dāng)做操作數(shù)執(zhí)行,程序自動納入正軌。此外,對系統(tǒng)流向起重要作用的指令(如RET,RETI,LCALL,LJMP,JC等指令)之前也可插入兩條NOP指令,確保這些重要指令的執(zhí)行。2.軟件調(diào)試
程序模塊編寫完成后,通過匯編或編譯后,在開發(fā)系統(tǒng)上進(jìn)行調(diào)試。調(diào)試時(shí)應(yīng)先分別調(diào)試各模塊子程序,調(diào)試通過后,再調(diào)試中斷服務(wù)子程序,最后調(diào)試主程序,并將各部分進(jìn)行聯(lián)調(diào)。3.系統(tǒng)調(diào)試
當(dāng)硬件和軟件調(diào)試完成之后,就可以進(jìn)行全系統(tǒng)軟、硬件調(diào)試,對于有電氣控制負(fù)載的系統(tǒng),應(yīng)先試驗(yàn)空載,空載正常后再試驗(yàn)負(fù)載情況。系統(tǒng)調(diào)試的任務(wù)是排除軟、硬件中的殘留錯誤,使整個系統(tǒng)能夠完成預(yù)定的工作任務(wù),達(dá)到要求的性能指標(biāo)。4.程序固化
系統(tǒng)調(diào)試成功之后,就可以將程序通過專用程序固化器固化到ROM中。5.脫機(jī)運(yùn)行調(diào)試
將固化好程序的ROM插回到應(yīng)用系統(tǒng)電路板的相應(yīng)位置,即可脫機(jī)運(yùn)行。系統(tǒng)試運(yùn)行要連續(xù)運(yùn)行相當(dāng)長的時(shí)間(也稱為考機(jī)),以考驗(yàn)其穩(wěn)定性。并要進(jìn)一步進(jìn)行修改和完善處理。6.測試單片機(jī)系統(tǒng)的可靠性單片機(jī)系統(tǒng)設(shè)計(jì)完成時(shí),一般需進(jìn)行單片機(jī)軟件功能的測試,上電、掉電測試,老化測試,靜電放電(ElectroStaticDischarge,ESD)抗擾度和電快進(jìn)瞬變脈沖群(ElectricalFastTransient,EFT)抗擾度等測試??梢允褂酶鞣N干擾模擬器來測試單片機(jī)系統(tǒng)的可靠性,還可以模擬人為使用中可能發(fā)生的破壞情況。經(jīng)過調(diào)試、測試后,若系統(tǒng)完全正常工作,功能完全符合系統(tǒng)性能指標(biāo)要求,則一個單片機(jī)應(yīng)用系統(tǒng)的研制過程全部結(jié)束。
⑤C51提供了復(fù)雜的數(shù)據(jù)類型(數(shù)組、結(jié)構(gòu)、聯(lián)合、枚舉、指針等),極大地增強(qiáng)了程序處理能力和靈活性;提供auto,extern,static,const等存儲類型和專門針對MCS-51單片機(jī)的data,bdata,idata,pdata,xdata,code等存儲類型,自動為變量合理地分配地址;提供small,compact,large等編譯模式,以適應(yīng)片上存儲器的大小;完整的編譯控制指令為程序調(diào)試提供必要的符號信息。⑥頭文件中允許定義宏、說明復(fù)雜數(shù)據(jù)類型和函數(shù)原型,有利于程序的移植和支持單片機(jī)的系列化產(chǎn)品的開發(fā)。⑦可方便地接受多種實(shí)用程序的服務(wù),有專門的實(shí)用程序自動生成;有實(shí)時(shí)多任務(wù)操作系統(tǒng),可調(diào)度多道任務(wù),簡化用戶編程,提高運(yùn)行的安全性等。2.單片機(jī)C51語言與C語言的異同
單片機(jī)的C51是繼承了標(biāo)準(zhǔn)C的絕大部分的特性,基本語法相同,但其本身在特定的硬件結(jié)構(gòu)上又有所擴(kuò)展(如專門針對MCS-51單片機(jī)的存儲類型等),需要在C51的實(shí)際編程應(yīng)用過程中逐步體會。7.3.2C51的基本語法
1.C51的程序結(jié)構(gòu)
與一般C語言的結(jié)構(gòu)相同,以main()函數(shù)為程序入口,程序體中包含若干語句,還可以包含若干函數(shù)。2.C51的數(shù)據(jù)類型
常用的數(shù)據(jù)類型有:位型(bit,1位)、字符型(char,1字節(jié))、整型(int,2字節(jié))、長整型(longint,4字節(jié))、浮點(diǎn)型(float,4字節(jié))、數(shù)組型、指針型等。3.C51數(shù)據(jù)的存儲類型
C51數(shù)據(jù)的存儲類型如下表所示。
4.C51包含的頭文件
C51包含的頭文件通常有reg51.h,math.h,ctype.h,stdio.h,stdlib.h,absacc.h。其中,常用的有reg51.h(定義特殊功能寄存器和位寄存器)和math.h(定義常用數(shù)學(xué)運(yùn)算)。
5.C51的運(yùn)算符
C51的運(yùn)算符與C語言基本相同:+(加)、-(減)、*(乘)、/(除)、>(大于)、>=(大于等于)、<(小于)、<=(小于等于)、=(等于)、!=(不等于)、&&(邏輯與)、||(邏輯或)、!(邏輯非)、>>(位右移)、<<(位左移)、&(按位與)、|(按位或)、^(按位異或)、~(按位取反)。6.C51的基本語句
C51的基本語句與標(biāo)準(zhǔn)C語言基本相同:if(選擇語句)、switch/case(多分支選擇語句)、while(循環(huán)語句)、for(循環(huán)語句)、do-while(循環(huán)語句)等。7.3.3C51編譯器
FranklinC51交叉編譯器是專為80C51系列單片機(jī)設(shè)計(jì)的一種高效的C語言編譯器,使用它可以縮短開發(fā)周期,降低開發(fā)成本,而且開發(fā)出的系統(tǒng)易于維護(hù),可靠性高,可移植性好,代碼的使用效率高。1.C51語言程序設(shè)計(jì)的基本技巧
(1)采用結(jié)構(gòu)化程序設(shè)計(jì)(2)采用模塊化程序設(shè)計(jì),分別指定個功能模塊相應(yīng)的入口參數(shù)和出口參數(shù),而經(jīng)常使用的一些程序最好編成函數(shù)。(3)充分利用C51語言的預(yù)處理命令。(4)采用宏定義“#define”(或集中起來)將一些常用的常數(shù)、各種特殊功能寄存器或程序中一些重要的、依據(jù)外界條件可變的常量放在一個頭文件中進(jìn)行定義,然后采用文件包含命令“#include”將其加入到程序中去,便于修改,有利于文件的維護(hù)和更新。2.C51語言與匯編語言程序的混合編程
有時(shí)為了編程直觀或某些特殊地址的處理,C51程序中還須采用一些匯編語言編程。而在另一些場合,出于某種目的,匯編語言也可調(diào)用C語言。在這種混合編程中,關(guān)鍵是參數(shù)的傳遞和函數(shù)的返回值。它們必須有完整的約定,否則數(shù)據(jù)的交換就可能出錯。3.C51中斷處理過程
C51編譯器支持在C源程序中直接開發(fā)中斷,中斷服務(wù)函數(shù)的完整語法如下:void函數(shù)名(void)[模式][再入]interruptn[usingr]
其中:n(0~31)----代表中斷號;r(0~3)----代表第r組寄存器;[再入]----說明中斷處理函數(shù)有無“再入”能力。。7.3.4KeilC51開發(fā)系統(tǒng)簡介1.系統(tǒng)概述KeilC51是美國KeilSoftware公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng)。其特點(diǎn)是提供豐富的庫函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,全Windows界面;生成的目標(biāo)代碼效率非常高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時(shí)更能體現(xiàn)高級語言的優(yōu)勢。2.KeilC51單片機(jī)軟件開發(fā)系統(tǒng)的功能KeilC51單片機(jī)軟件開發(fā)系統(tǒng)可以完成編輯、編譯、連接、調(diào)試、仿真等整個開發(fā)流程。開發(fā)人員可用集成開發(fā)環(huán)境IDE本身或其他編輯器編輯C或匯編源文件。然后分別由C51及A51編譯器編譯生成目標(biāo)文件(.OBJ)。目標(biāo)文件可由L51創(chuàng)建生成庫文件,也可以與庫文件一起,經(jīng)L51連接定位,生成絕對目標(biāo)文件(.ABS)。
KeilC51工具包各部分功能如下:(1)C51是C語言編譯器,其使用方法為:C51sourcefile[編譯控制指令]
或者
C51@commandfile其中:source源文件(.C)。大量的編譯控制指令完成C51編譯器的全部功能。包括C51輸出文件C.LST,.OBJ,.I和.SRC文件及源文件(.C)的控制等。Command一個連接控制文件,其內(nèi)容包括:.C源文件及各編譯控制指令,它沒有固定的名字,開發(fā)人員可根據(jù)自己的習(xí)慣指定,它適用于控制指令較多的場合。
(2)A51是匯編語言編譯器,使用方法為:A51sourcefile[編譯控制指令]
或者A51@commandfile其中:source匯編源文件(.asm或.a51),而編譯控制指令的使用與其他匯編(如ASM)語言類似。Command中的Commandfile類似,它使A51的使用和修改比較方便。(3)L51是KeilC51軟件包提供的連接器/定位器,其功能是將編譯生成的.OBJ文件與庫文件連接定位,生成絕對目標(biāo)文件(.ABS),其使用方法為:L51目標(biāo)文件列表[庫文件列表][tooutputfile][連接控制指令]
或者
L51@Commandfile源程序的多個模塊分別經(jīng)C51與A51編譯后生成多個.OBJ文件,連接時(shí),這些文件全列于目標(biāo)文件列表中,作為輸入文件,如果還需與庫文件(.LIB)相連接,則庫文件也必須列在其后。其中:output輸出文件名,默認(rèn)為第一模塊名,后綴為.ABS。連接控制指令提供了連接定位時(shí)的所有控制功能。Command連接控制文件,其具體內(nèi)容包括了目標(biāo)文件列表、庫文件列表及輸出文件、連接控制命令。第2種方法簡單,在設(shè)計(jì)時(shí)較多見。
(4)BL51也是C51軟件包的代碼連接器/定位器,除具有L51的所有功能外,它還可以連接定位大于64KB的程序,具有代碼域及域切換功能,可用于RTX51操作系統(tǒng)等功能。(5)RTX51是一個實(shí)時(shí)多任務(wù)操作系統(tǒng),可以不用main()函數(shù),是單片機(jī)系統(tǒng)軟件向RTOS發(fā)展是一種趨勢。(6)dScope51是一個源級調(diào)試器和模擬器,它可以調(diào)試由C51編譯器、A51匯編器、PL/M-51編譯器及ASM-51匯編器產(chǎn)生的程序。它不需目標(biāo)板,只能進(jìn)行軟件模擬,但其功能強(qiáng)大,可模擬CPU及其外圍器件,能對嵌入式軟件功能進(jìn)行有效測試。(7)Initfile為一個初始化文件,它在啟動dScope51后,在debugfile之前裝入,裝有一些dScope的初始化參數(shù)及常用調(diào)試函數(shù)等。(8)tScope51也為一個初始化文件,與dScope51不同的是,tScope51必須帶目標(biāo)板,目前它可以通過兩種方式訪問目標(biāo)板。①通過EMul51在線仿真器,tScope51為該仿真器準(zhǔn)備了一個動態(tài)連接文件EMUL51.IOT,但該方法必須配合該仿真器。②通過Monitov51監(jiān)控程序。tScope51為訪問Monitor51,專門帶有MON51.IOT連接程序,使用時(shí)可通過串口及監(jiān)控程序來調(diào)試目標(biāo)板。(9)Monitor51是一個監(jiān)控程序,通過PC的串口與目標(biāo)板進(jìn)行通信,Monitor操作需要MON51或dScope51forWindows。(10)IshellforDOS是一個DOS環(huán)境下的IDE,直接在命令行輸入Ishell,則進(jìn)入該環(huán)境。它使用簡單方便,其命令行與DOS命令行具有同樣的功能。(11)uVisionforWindows是一個標(biāo)準(zhǔn)的Windows應(yīng)用程序,它是C51的一個集成軟件開發(fā)平臺,具有源代碼編輯、Project管理、集成的Make等功能,它的人機(jī)界面友好,操作方便,是開發(fā)者的首選。3.KeilC51與標(biāo)準(zhǔn)C
對標(biāo)準(zhǔn)C的擴(kuò)展是學(xué)習(xí)C51的關(guān)鍵之一。C51直接針對8051系列CPU對標(biāo)準(zhǔn)C的擴(kuò)展包括8051存儲類型及存儲區(qū)域、存儲模式、存儲器類型聲明、變量類型聲明、位變量與位尋址、特殊功能寄存器(SFR)、C51指針、函數(shù)屬性等8類。(1)KeilC51擴(kuò)展關(guān)鍵字
C51V4.0的擴(kuò)展關(guān)鍵字如下(共19個):atidatasfr16alieninterruptsmallbdatalargetaskcodebitpdatausingreentrantxdatacompactsbitdatasfr(2)內(nèi)存區(qū)域(MemoryAreas)
①由code說明可有多達(dá)64KB的程序存儲器。②內(nèi)部數(shù)據(jù)存儲器可用以下關(guān)鍵字說明:data:直接尋址區(qū),為內(nèi)部RAM的低128字節(jié)00H~7FH;idata:間接尋址區(qū),包括整個內(nèi)部RAM區(qū)00H~FFH;bdata:可位尋址區(qū),20H~2FH。
③外部RAM視使用情況可由以下關(guān)鍵字標(biāo)志:xdata:可指定多達(dá)64KB的外部直接尋址區(qū),地址范圍0000H~0FFFFH;pdata:能訪問1頁(256字節(jié))的外部RAM,主要用于緊湊模式(CompactModel)。④8051提供128字節(jié)的SFR尋址區(qū),可由以下幾種關(guān)鍵字說明:sfr:字節(jié)尋址,如sfrP0=0x80,指出P0口地址為80H,“=”后為00H~FFH之間的常數(shù)。sfr16:字尋址,如sfr16T2=0xCC,指定T2口地址為TL2=0xCCH,TH2=0xCDH。sbit:位尋址,如sbitEA=0xAF,指定第0xAFH位為EA,即中斷允許。還可以有如下定義方法:
sbitOV=PSW^2(定義OV為PSW的第2位)sbitOV=0xDo^2(同上)或bitOV=0xDo2(同上)。7.3.5C51應(yīng)用舉例
[例題]
設(shè)單片機(jī)的fOSC=12MHz,要求用T0的方式1編程,在P1.0引腳輸出周期為2ms的方波。解:用C語言編寫的中斷服務(wù)程序如下:
#includesbitP1_0=P1^0;voidtimer0(void)interrupt1using1{/*T0中斷服務(wù)程序入口*/P1_0=!P1_0;TH0=-(1000/256);/*計(jì)數(shù)初值重裝*/TL0=-(1000%256);}voidmain(void){TMOD=0x01;/*T0工作在定時(shí)器方式1*/P1_0=0;TH0=-(1000/256);/*預(yù)置計(jì)數(shù)初值*/TL0=-(1000%256);EA=1;/*CPU開中斷*/ET0=1;/*T0開中斷*/TR0=1;/*啟動T0*/do{}while(1);}
注意:在編寫中斷服務(wù)程序時(shí)必須注意不能進(jìn)行參數(shù)傳遞,不能有返回值。[例題]
拆字程序。將2000H的內(nèi)容拆開,高位送2001H低位,低位送2002H低位。解:匯編語言程序如下:
ORG1000HSE02: MOVDPTR,#2000H MOVXA,@DPTR MOVB,A ;(2000H)→A→B SWAPA ;交換 ANLA,#0FH ;屏蔽高位 INCDPTR MOVX@DPTR,A ;送2001H INCDPTR MOVA,B ANLA,#0FH ;(2000H)內(nèi)容屏蔽高位 MOVX@DPTR,A ;送2002H SJMP$ END
C51程序如下:
#include<reg51.h>main(){unsignedcharxdata*p=0x2000;/*指針指向2000H單元*//*2002H單元高4位清零,低4位裝2000H單元低4位*/*(p+2)=(*p)&0x0f;/*2001H單元高4位清零,低4位裝2000H單元高4位*/*(p+1)=(*p)>>4;}7.4單片機(jī)應(yīng)用系統(tǒng)舉例
7.4.1單片機(jī)在控制系統(tǒng)中的應(yīng)用
單片機(jī)的一個廣泛應(yīng)用領(lǐng)域就是控制系統(tǒng)。1.設(shè)計(jì)思想
通過傳感電路不斷循環(huán)檢測室內(nèi)溫度、濕度、有害氣體(如煤氣)濃度等環(huán)境參數(shù),然后與由控制鍵盤預(yù)置的參數(shù)臨界值相比較,從而作出開/關(guān)窗、啟/停換氣扇、升/降溫(濕)等判斷,再結(jié)合窗狀態(tài)檢測電路所檢測到的窗狀態(tài),發(fā)出一系列的控制命令,完成下雨則自動關(guān)窗、室內(nèi)有害氣體超標(biāo)則自動開窗、開/啟換氣扇、恒溫(濕)等自動控制功能。用戶還可通過控制鍵盤,直接控制窗戶的開/關(guān)、換氣扇的啟/停、溫(濕)度的升/降,選擇所顯示參數(shù)的種類等。2.系統(tǒng)組成和部分電路設(shè)計(jì)
控制系統(tǒng)主要由控制器、數(shù)據(jù)檢測傳感電路、A/D轉(zhuǎn)換器、窗驅(qū)動控制接口電路、窗驅(qū)動電路等組成。其系統(tǒng)原理圖如下頁圖所示。
控制器采用美國Atmel公司的AT89C51單片機(jī)。利用89C51的P0口采集數(shù)據(jù),完成控制信息的采集和控制功能。利用P1.0~P1.3作為窗狀態(tài)檢測端口,完成對窗狀態(tài)(即窗是否移到邊框)的檢測。數(shù)據(jù)檢測傳感電路由溫度傳感電路、濕度傳感電路、有害氣體傳感電路、紅外防盜傳感器四個部分組成。在此只以溫度傳感電路為例進(jìn)行設(shè)計(jì)。
根據(jù)溫度檢測的要求,溫度的檢測選用集成溫度傳感器AD590(測溫范圍為—55℃~+150℃)。測量電路如圖右所示。
傳感器的采集信號經(jīng)過數(shù)據(jù)處理電路,必須通過A/D轉(zhuǎn)換器才能與單片機(jī)連接,本系統(tǒng)中有4路模擬輸入,A/D轉(zhuǎn)換器選用了ADC0809,89C51通過中斷方式讀取A/D轉(zhuǎn)換的數(shù)據(jù)。通過A/D轉(zhuǎn)換實(shí)現(xiàn)的數(shù)據(jù)采集電路如下圖所示。A/D轉(zhuǎn)換器的口地址為7FFFH。
根據(jù)驅(qū)動信號與所控對象的關(guān)系,將系統(tǒng)的驅(qū)動電路分解為移窗驅(qū)動電路、換窗驅(qū)動電路、鎖窗驅(qū)動電路、溫度調(diào)節(jié)驅(qū)動電路、濕度調(diào)節(jié)驅(qū)動電路、換氣扇驅(qū)動電路和報(bào)警驅(qū)動電路等,分別用它們?nèi)タ刂?個對象。窗狀態(tài)檢測電路采用4個開關(guān)型磁敏器件。在外窗、內(nèi)窗的左、右邊上,與磁敏器件相對應(yīng)的地方,各貼上一小片磁鐵,當(dāng)小磁鐵隨窗戶的移動而移近相對應(yīng)的磁敏器件時(shí),該磁敏器件的輸出信號從高電平變?yōu)榈碗娖?,表示窗戶已移到相?yīng)邊上。鍵盤輸入及顯示電路采用Intel公司生產(chǎn)的8279通用可編程鍵盤、顯示器接口芯片??蓪?shí)現(xiàn)對鍵盤和顯示器的自動掃描,并識別鍵盤上閉合鍵的鍵號。對于控制鍵盤,采用微動開關(guān)制作,并安裝在窗戶的固定邊框上。通過控制鍵盤,用戶可設(shè)置各環(huán)境參數(shù)的臨界值、隨意選擇所顯示參數(shù)的種類、直接控制窗戶的開/關(guān)、換氣扇的啟/停、溫(濕)度的升/降等。3.軟件設(shè)計(jì)
控制系統(tǒng)的軟件主要由一個主程序和兩個中斷服務(wù)程序等組成。主程序的主要作用是在系統(tǒng)復(fù)位后對系統(tǒng)進(jìn)行初始化,設(shè)置8279,ADC0809等的工作方式和初始狀態(tài),設(shè)置各中斷的優(yōu)先級別并開中斷,首次啟動A/D轉(zhuǎn)換等,然后向8279循環(huán)送顯示字符,進(jìn)行顯示。程序框圖如右上圖所示。鍵中斷服務(wù)程序的主要作用是在AT89C51響應(yīng)中斷(有鍵按下,則產(chǎn)生該中斷)后,讀出鍵值,并根據(jù)鍵值依序發(fā)出相應(yīng)的控制命令字,完成相應(yīng)的控制功能。該中斷應(yīng)設(shè)為高優(yōu)先級。程序框圖如右下圖所示。
循環(huán)檢測中斷服務(wù)程序的主要作用是在89C51響應(yīng)中斷后,將A/D轉(zhuǎn)換結(jié)果送相應(yīng)緩沖區(qū),然后判斷該轉(zhuǎn)換結(jié)果是否在上、下限值之間,并根據(jù)判斷結(jié)果按序發(fā)出相應(yīng)的控制命令字,完成相應(yīng)的控制、報(bào)警功能。然后重新選擇被轉(zhuǎn)換量,再次啟動A/D轉(zhuǎn)換后,返回主程序。該中斷應(yīng)設(shè)為低優(yōu)先級,并設(shè)為電平觸發(fā)方式。程序流程圖如右圖所示。7.4.2單片機(jī)在家用電器中的應(yīng)用
單片機(jī)在家電行業(yè)具有廣泛的應(yīng)用。下面以單片機(jī)在電冰箱控制系統(tǒng)中的應(yīng)用為例加以介紹。1.總體方案設(shè)計(jì)直冷式電冰箱的控制原理:根據(jù)蒸發(fā)器的溫度控制制冷壓縮機(jī)的啟動、停止,使冰箱內(nèi)的溫度保持在設(shè)定溫度范圍內(nèi)。采用單片機(jī)控制壓縮機(jī)的啟動和停止,可以使控制更準(zhǔn)確、更靈活。電冰箱采用單片機(jī)控制的性能指標(biāo)如下:
①設(shè)定3個測溫點(diǎn),測量范圍在-26℃~+26℃之間,精度為±0.5℃。②利用功能鍵分別控制溫度設(shè)定、速凍設(shè)定、冷藏室及冷凍室溫度設(shè)定等。
③利用數(shù)碼管顯示冷凍室、冷藏室溫度,壓縮機(jī)啟動、停止和速凍、報(bào)警狀態(tài)。④制冷壓縮機(jī)停機(jī)后,自動延時(shí)3分鐘才能再啟動。⑤電冰箱具有自動除霜功能,當(dāng)霜的厚度達(dá)3cm時(shí)自動除霜。⑥開門延時(shí)超過2分鐘發(fā)出聲音報(bào)警。⑦連續(xù)速凍時(shí)間設(shè)定范圍為1~8小時(shí)。⑧工作電壓在180~240V之間,當(dāng)欠壓或過壓時(shí),禁止啟動壓縮機(jī),并用指示燈顯示。根據(jù)上面所列出的控制系統(tǒng)要求,可估算出所需要的程序存儲器的容量不會超過4KB,因此可以采用Philips公司生產(chǎn)的80C51單片機(jī)(片內(nèi)有4KB的ROM,128字節(jié)的RAM),不用進(jìn)行外部擴(kuò)展存儲器,可以大大簡化系統(tǒng)的硬件電路。此外,80C51單片機(jī)在市場上的貨源充足,技術(shù)比較成熟,同時(shí)也具有較好的開發(fā)環(huán)境。2.硬件設(shè)計(jì)(1)主電路設(shè)計(jì)
主電路采用80C51單片機(jī),擴(kuò)展一片A/D轉(zhuǎn)換芯片ADC0809,構(gòu)成基本的系統(tǒng)。由于本系統(tǒng)無通信要求,可以通過串行口擴(kuò)展四片74LS164作為四位LED顯示器接口和一片74LS164來實(shí)現(xiàn)鍵盤功能。本系統(tǒng)還有一些附加的電路,如除霜電路、電壓檢測電路和開關(guān)報(bào)警電路等。電冰箱控制系統(tǒng)的電路原理圖如下頁圖所示。(2)A/D轉(zhuǎn)換電路
A/D轉(zhuǎn)換電路采用ADC0809。ADC0809共有8路模擬輸入通道(本系統(tǒng)只用到其中的4路IN0~I(xiàn)N3)。其中,IN0作為冷凍室溫度檢測通道,IN1作為冷藏室溫度檢測通道,IN2作為除霜檢測通道,IN3作為電源電壓檢測通道。ADC0809與單片機(jī)接口電路見電路原理圖如下頁圖所示。
上頁圖中,ADC0809的A,B,C三個引腳直接和80C51單片機(jī)的P0.0~P0.2三個引腳相連,用于選擇不同的模擬通道信號。P1.6與讀寫控制信號端和經(jīng)過或非門連接到ADC0809的START,ALE,OE端,分別控制ADC0809的啟動、地址鎖存、讀操作和寫操作。ADC0809的EOC端懸空,A/D轉(zhuǎn)換后利用軟件延時(shí)一段時(shí)間來讀取轉(zhuǎn)換后的數(shù)據(jù)。(3)功能鍵和顯示電路
功能鍵和顯示電路如上頁圖所示。采用6個功能鍵控制冷凍室、冷藏室及速凍溫度設(shè)定,4位LED顯示器用于顯示冷凍、冷藏室溫度,以及壓縮機(jī)啟動、停止和報(bào)警等狀態(tài)。LED顯示及功能鍵都是通過80C51的串行口擴(kuò)展的。顯示輸出通道和鍵盤輸入通道的選擇由端口線P3.2和與門完成。當(dāng)P3.2為“1”時(shí),數(shù)據(jù)輸出到顯示器。當(dāng)P3.2為“0”時(shí),80C51王誠對鍵盤的掃描。(4)除霜電路
選用MF53-1型熱敏電阻作為溫度傳感器(Rt),它具有負(fù)溫度系數(shù),靈敏度較高。把熱敏電阻安裝在距蒸發(fā)器3mm的某個合適的位置上,當(dāng)霜厚大于3mm時(shí),熱敏電阻Rt接觸到霜從而感受到較低的溫度,其電阻值變大,A點(diǎn)溫度降低,運(yùn)算放大器輸出信號有變化,經(jīng)A/D轉(zhuǎn)換后送入CPU,經(jīng)單片機(jī)分析、判斷,給出除霜命令。除霜電路如下圖所示。熱敏電阻Rt的阻值和溫度的關(guān)系為:(k)A點(diǎn)電壓與溫度的關(guān)系為:(5)制冷壓縮機(jī)和除霜電熱絲啟動、停止控制電路
其電路如下頁圖所示,加熱絲和壓縮機(jī)的工作原理如下:80C51單片機(jī)控制信號經(jīng)P1.3和P1.4端口輸出,并通過P1.7的控制,將信號鎖存在74LS273中,74LS273的輸出經(jīng)過達(dá)林頓驅(qū)動器DS2003后,驅(qū)動固態(tài)繼電器RELAY1和RELAY2。當(dāng)DS2003的16腳有高電平輸出時(shí),RELAY1的3,4腳接通,使加熱絲接通電源,開始除霜。當(dāng)DS2003的15腳輸出高電平時(shí),RELAY2的3,4腳接通,使壓縮機(jī)繞組接通電源而啟動,開始制冷。74LS273的鎖存控制信號,一方面增加輸出功率,另一方面也防止單片機(jī)復(fù)位時(shí)引起控制的誤動作。
電冰箱控制程序主要分為三大部分:主程序、定時(shí)器T0中斷服務(wù)程序和定時(shí)器T1中斷服務(wù)程序。(1)主程序
主程序是整個電冰箱的總控制程序,主要實(shí)現(xiàn)控制各單元初始化、控制中斷、定時(shí)、顯示、鍵盤程序的啟動與重復(fù)等功能。主程序的程序流程圖如右圖所示。。3.軟件設(shè)計(jì)
T0中斷服務(wù)程序主要完成電源欠壓、過壓處理,開門狀態(tài)檢查,以及處理等功能。其程序流程圖如右圖所示。(2)T0中斷服務(wù)程序(3)Tl中斷服務(wù)程序
Tl工作于計(jì)數(shù)方式,用于制冷壓縮機(jī)停機(jī)后自動延時(shí)3分鐘才能再啟動的時(shí)間延時(shí)。Tl的中斷服務(wù)程序主要完成3分鐘定時(shí),以及溫度、除霜、速凍等各種檢測,根據(jù)檢測結(jié)果,比較、分析得出執(zhí)行元器件工作的狀態(tài),并控制對應(yīng)的元器件工作。Tl中斷服務(wù)程序流程圖如右圖所示。7.4.3單片機(jī)在里程、速度計(jì)量中的應(yīng)用設(shè)計(jì)要求:利用單片機(jī)實(shí)現(xiàn)的自行車?yán)锍?速度計(jì)能自動顯示自行車行駛的總里程數(shù)及自行車行駛速度,具有超速信號提醒功能,里程數(shù)據(jù)自動記憶。也可應(yīng)用于電動自行車、摩托車、汽車等機(jī)動車儀表上。1.總體設(shè)計(jì)
控制器采用AT89C52單片機(jī),速度及里程傳感器采用霍爾元件,顯示器通過AT89C52的P0口和P2口擴(kuò)展。外部存儲器采用E2PROM存儲器AT24C01,用于存儲里程和速度等數(shù)據(jù)。并用控制器來控制里程/速度指示燈,里程指示燈亮?xí)r,顯示里程;速度指示燈亮?xí)r,顯示速度。超速報(bào)警采用揚(yáng)聲器,用一個發(fā)光二極管來配合揚(yáng)聲器,揚(yáng)聲器響時(shí),二極管亮,表明超速。
2.硬件電路設(shè)計(jì)
電路原理圖如下頁圖所示。P0口和P2口用于七段LED顯示器的段碼及掃描輸出。在顯示里程時(shí),第三位小數(shù)點(diǎn)用P3.7口()控制點(diǎn)亮。P1.0口和P1.1口分別用于顯示里程狀態(tài)和速度狀態(tài)。P1.2,P1.3,P1.6和P1.7口分別用于設(shè)置輪圈的大小。P3.0口的開關(guān)用于確定顯示的方式。當(dāng)開關(guān)閉合時(shí),顯示速度;斷開時(shí),顯示里程。外中斷用于對輪子圈數(shù)的計(jì)數(shù)輸入,輪子每轉(zhuǎn)一圈,霍爾傳感器輸出一個低電平脈沖。外中斷用于控制定時(shí)器T1的啟停,當(dāng)輸入為0時(shí)關(guān)閉定時(shí)器。此控制信號是將輪子圈數(shù)的計(jì)數(shù)脈沖經(jīng)二分頻后形成,這樣,每次定時(shí)器T1的開啟時(shí)間正好為輪子轉(zhuǎn)一圈的時(shí)間,根據(jù)輪子的周長就可以計(jì)算出自動車的速度。P1.4口和P1.5口用于E2PROM存儲器24C01的存取控制。11腳(TXD)輸出用于速度超速時(shí)的報(bào)警。3.軟件設(shè)計(jì)軟件主要包括:主程序、初始化程序、里程計(jì)數(shù)子程序、數(shù)據(jù)處理子程序、計(jì)數(shù)器中斷服務(wù)程序、E2PROM存取程序、顯示子程序。(1)主程序
根據(jù)P0口的開關(guān)狀態(tài)切換顯示狀態(tài),即選擇里程顯示和速度顯示。其流程圖如右圖所示。程序如下:
ORG 0000H LJMPSTART ;跳至主程序 ORG0003H ;外中斷0中斷程序入口 LJMPINTEX0 ;跳至INTEX0中斷服務(wù)程序 ORG000BH ;定時(shí)器T0中斷程序入口 RETT1 ;中斷返回 ORG 0013H ;外中斷1中斷入口 LJMPINTEX1 ;跳至INTEX1中斷服務(wù)程序 ORG001BH ;定時(shí)器T1中斷程序入口 LJMPINTT1 ;跳至INTT1中斷服務(wù)程序 ORG0023H ;串口中斷入口地址 RET1 ;中斷返回 ORG002BH ;定時(shí)器T2中斷入口地址 RET1 ;中斷返回 ORG 0050H START:LCALLCLEARMEN ;上電初始化START1:JBP0.4,DISPLAYS ;P0.4=1,則顯示里程 LCALLDISPLAYV ;P0.4=0,顯示速度START2:SJMPSTART ;轉(zhuǎn)START循環(huán)(2)初始化程序
初始化程序主要功能是將T1設(shè)為外部控制定時(shí)器方式,外中斷及設(shè)為邊沿觸發(fā)方式,將部分內(nèi)存單元清0,設(shè)置車輪周長值,開中斷、啟動定時(shí)器,將AT24C01中的數(shù)據(jù)調(diào)入內(nèi)存中,設(shè)置車輪圈出錯處理程序。
程序如下:CLEARMEN: MOV TMOD,#90 ;T1為16位外部控制定時(shí)器 MOV SP,#75H ;堆棧在75H開始 SETB PX0 ;外中斷0優(yōu)先級為1 SETB IT0 ;外中斷0用邊沿觸發(fā) SETB IT1 ;外中斷1用邊沿觸發(fā) MOV A,#00H ;清A MOV 20H,A ;清內(nèi)存中特定單元 MOV 6CH,A MOV 6DH,A MOV 70H,A MOV 71H,A MOV 72H,A MOV 73H,A MOV 60H,A
MOV 61H,A MOV 62H,A MOV 63H,A ;清內(nèi)存中特定單元 DEC A ;A為#0FFH MOV 68H,A ;內(nèi)存置數(shù)據(jù)#0FFH MOV 69H,A ;內(nèi)存置數(shù)據(jù)#0FFH MOV 6AH,A ;內(nèi)存置數(shù)據(jù)#0FFH MOV 6BH,A ;內(nèi)存置數(shù)據(jù)#0FFH MOV P1,A ;P1口置1CLEAR1: JB P1.2,KEY1 ;根據(jù)P1.2,P1.3,P1.6,P1.7設(shè)置狀態(tài)在21H地址單元設(shè)置自行車周長值 MOV 21H,#0FH ;22英寸自行車周長系數(shù) LJMP CLEAR2 ;轉(zhuǎn)CLEAR2KEY1: JB P1.3,KEY2 MOV 21H,#12H ;24英寸自行車周長系數(shù) LJMP CLEAR2 ;轉(zhuǎn)CLEAR2KEY2: JB P1.6,KEY3 MOV 21H,#14H ;26英寸自行車周長系數(shù) LJMP CLEAR2 ;轉(zhuǎn)CLEAR2KEY3: JB P1.7,ERR MOV 21H,#19H ;28英寸自行車周長系數(shù)CLEAR2: SETB TR1 ;開定時(shí)器開關(guān)T1 SETB EA ;開中斷允許
SETB EX0 ;開外中斷 SETB ET1 ;開定時(shí)中斷T1 SETB P3.1 ;關(guān)報(bào)警器 LCALL VIICREAD;將
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中建二局商務(wù)管理部招聘備考題庫及參考答案詳解
- 國家知識產(chǎn)權(quán)局專利局專利審查協(xié)作江蘇中心2026年度專利審查員公開招聘備考題庫完整參考答案詳解
- 2025年福建海峽銀行龍巖分行誠聘英才備考題庫及一套參考答案詳解
- 安徽省課程設(shè)計(jì)大賽
- 2025年中國科學(xué)院深??茖W(xué)與工程研究所招聘備考題庫(十三)附答案詳解
- 2025廣東茂名市公安局電白分局第十一批招聘警務(wù)輔助人員70人考試重點(diǎn)題庫及答案解析
- 2025年量子計(jì)算技術(shù)突破與應(yīng)用報(bào)告
- 2025年中國社會科學(xué)院亞太與全球戰(zhàn)略研究院公開招聘第一批專業(yè)技術(shù)人員備考題庫及一套參考答案詳解
- 2025年度葫蘆島市市直部分事業(yè)單位公開招聘高層次人才84人考試重點(diǎn)題庫及答案解析
- 2025年東莞市公安局鳳崗分局警務(wù)輔助人員招聘12人備考題庫及1套參考答案詳解
- 2025年甘肅省酒泉市中級人民法院招聘聘用制司法警察參考模擬試題及答案解析
- 技工學(xué)校校長2025年度述職報(bào)告
- DB44-T 2507-2024 林下卡亞栽培技術(shù)規(guī)程
- 2025年鄭州水務(wù)集團(tuán)有限公司招聘80人筆試考試備考試題及答案解析
- 醫(yī)療糾紛預(yù)防的平臺
- 注塑件測量培訓(xùn)講義
- 2025年國家開放大學(xué)(電大)《民法學(xué)》期末考試復(fù)習(xí)試題及答案解析
- 智聯(lián)招聘在線測評題庫及答案
- 市婦幼保健院關(guān)于調(diào)整實(shí)驗(yàn)室質(zhì)量管理委員會通知
- 食品檢驗(yàn)工作流程
- 學(xué)生實(shí)習(xí)協(xié)議模板
評論
0/150
提交評論