版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、. . . . 第一章 系統(tǒng)的總體設(shè)計(jì)1 . 1功能要求本系統(tǒng)要求能能完成電子時(shí)鐘顯示,調(diào)整,節(jié)能運(yùn)行,電子秒表記數(shù)等多種功能,由按鍵電路或遙控電路完成功能的設(shè)置,秒表時(shí)鐘計(jì)時(shí)器要求用六位LED數(shù)碼管顯示時(shí)、分、秒,以24h(小時(shí))計(jì)時(shí)方式。使用按鍵開(kāi)關(guān)或遙控開(kāi)關(guān)可實(shí)現(xiàn)時(shí)分調(diào)整、秒表時(shí)鐘功能轉(zhuǎn)換、省電(關(guān)閉顯示)等功能。1 . 2方案論證為了實(shí)現(xiàn)LED顯示器的數(shù)字顯示,可以采用靜態(tài)顯示法和動(dòng)態(tài)顯示法。由于靜態(tài)顯示法需要數(shù)據(jù)鎖存器等硬件,接口復(fù)雜一些??紤]時(shí)鐘顯示只有六位,且系統(tǒng)沒(méi)有其它復(fù)雜的處理任務(wù),所以決定采用動(dòng)態(tài)掃描法實(shí)現(xiàn)LED的顯示。單片機(jī)采用易購(gòu)的AT89C51系列,這樣單片機(jī)可具有足
2、夠的空余硬件資源實(shí)現(xiàn)其它的擴(kuò)充功能,如考慮到要使用電池供電的話,則可采用LV系列單片機(jī)。硬件系統(tǒng)的總體構(gòu)成框架如圖1所示。圖1 單片機(jī)控制的多功能計(jì)時(shí)器系統(tǒng)的設(shè)計(jì)總體框圖1 . 3系統(tǒng)總體設(shè)計(jì)本單片機(jī)控制的多功能計(jì)時(shí)器系統(tǒng),采用單片機(jī)作為控制核心,具有控制靈活,簡(jiǎn)單可靠,造價(jià)便宜等諸多優(yōu)點(diǎn)。單片機(jī)雖然是一個(gè)五臟俱全的計(jì)算機(jī),但由于本身無(wú)開(kāi)發(fā)能力,必須借肋開(kāi)發(fā)工具來(lái)開(kāi)發(fā)應(yīng)用軟件以與對(duì)硬件系統(tǒng)進(jìn)行診斷。因此,我們要研制一個(gè)較完整的單片機(jī)產(chǎn)品時(shí),必須完成以下幾步工作:硬件電路設(shè)計(jì)、組裝、調(diào)試應(yīng)用軟件的編制、調(diào)試應(yīng)用軟件的調(diào)試、固化、脫機(jī)運(yùn)行(即脫離開(kāi)發(fā)裝置)。本單片機(jī)控制系統(tǒng)的開(kāi)發(fā)過(guò)程包括總體設(shè)計(jì)、
3、硬件設(shè)計(jì)、軟件設(shè)計(jì)等幾個(gè)階段,但各階段不是絕對(duì)分開(kāi)的,有時(shí)是交叉進(jìn)行的。本系統(tǒng)在設(shè)計(jì)上特點(diǎn)有如下所示1) 系統(tǒng)硬件結(jié)構(gòu)結(jié)合應(yīng)用軟件方案一并考慮。因?yàn)橛布Y(jié)構(gòu)與軟件設(shè)計(jì)方案會(huì)產(chǎn)生相互影響,我們考慮的原則是:軟件能實(shí)現(xiàn)的功能盡可能由軟件來(lái)實(shí)現(xiàn),以簡(jiǎn)化硬件結(jié)構(gòu)。但必須注意如用軟件來(lái)實(shí)現(xiàn)的硬件功能,其響應(yīng)時(shí)間要比直接用硬件來(lái)實(shí)現(xiàn)花的時(shí)間長(zhǎng),而且占用CPU時(shí)間。因此,選擇軟件方案時(shí),要考慮到這此因素。2) 整個(gè)系統(tǒng)中相關(guān)的器件要盡可能做到性能匹配。3) 可靠性與抗干擾設(shè)計(jì)是硬件系統(tǒng)設(shè)計(jì)不可缺少的一部分,它包括芯片、器件選擇、去耦濾波、印刷電路板布線、通道隔離等。4) 單片機(jī)外接電路較多時(shí),必須考慮其驅(qū)動(dòng)
4、能力。驅(qū)動(dòng)能力不足時(shí),系統(tǒng)工作不可靠,解決的辦法是增加驅(qū)動(dòng)能力,增設(shè)線驅(qū)動(dòng)器或者減少芯片功耗,降低總線負(fù)載。本電路的硬件設(shè)計(jì)包括:加1電路、減1電路、復(fù)位電路、振蕩電路與驅(qū)動(dòng)電路、顯示電路等。在完成各個(gè)單元電路的設(shè)計(jì)與調(diào)試后,我們與軟件系統(tǒng)進(jìn)行了聯(lián)調(diào),且達(dá)到了一個(gè)較為理想的結(jié)果。單片機(jī)控制的多功能計(jì)時(shí)器系統(tǒng)總體開(kāi)發(fā)與設(shè)計(jì)的流程圖如圖2所示。圖2單片機(jī)控制的多功能計(jì)時(shí)器系統(tǒng)總體開(kāi)發(fā)與設(shè)計(jì)的流程圖第二章系統(tǒng)硬件電路設(shè)計(jì)2 . 1硬件系統(tǒng)設(shè)計(jì)應(yīng)考慮的問(wèn)題本單片機(jī)控制的多功能計(jì)時(shí)器系統(tǒng)在硬件系統(tǒng)設(shè)計(jì)上主要考慮下列幾點(diǎn):(1) 盡可能選擇典型電路(2) 系統(tǒng)的擴(kuò)充與外圍裝置,應(yīng)充分滿足應(yīng)用系統(tǒng)的要求,并
5、留一些擴(kuò)充槽,以便進(jìn)行二次開(kāi)發(fā)。(3) 硬件結(jié)構(gòu)應(yīng)結(jié)合應(yīng)用軟件一并考慮。軟件有執(zhí)行的功能盡可能由軟件來(lái)執(zhí)行,以簡(jiǎn)化硬件結(jié)構(gòu)。但必須注意,由軟件執(zhí)行硬件的功能,其響應(yīng)時(shí)間比直接使用硬件要長(zhǎng),且占用CPU時(shí)間。(4) 整個(gè)系統(tǒng)器件盡可能做到性能匹配。(5) 可靠性與抗干擾設(shè)計(jì)是硬件設(shè)計(jì)極其重要的部分,包括器件選擇、電路板布線、通道隔離等。(6) 單片機(jī)微處理器外接電路較多時(shí),必須考慮其驅(qū)動(dòng)能力,驅(qū)動(dòng)能力不足時(shí),系統(tǒng)工作不可靠。解決辦法是增加驅(qū)動(dòng)能力,或減少IC功耗,降低總線負(fù)載。2 . 2電路各部分硬件電路介紹1)單片機(jī)控制的多功能計(jì)時(shí)器系統(tǒng)的設(shè)計(jì)總體框圖如圖3所示。圖3 單片機(jī)控制的多功能計(jì)時(shí)器
6、系統(tǒng)的設(shè)計(jì)總體框圖2)控制核心采用目前較為流行的、且價(jià)格低廉的89C51為控制核心,主要包括:?jiǎn)纹瑱C(jī)電路、加1電路、減1電路、復(fù)位電路、振蕩電路、數(shù)字驅(qū)動(dòng)與顯示電路,下面我們一一進(jìn)行闡明。硬件電路原理圖如圖4所示。圖4 硬件電路原理圖2 . 2 . 1單片機(jī)AT89C51與其特點(diǎn) 本系統(tǒng)以單片機(jī)AT89C51為控制核心,AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除100次。該器
7、件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器。AT89C單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。1主要特性:·與MCS-51 兼容 ·4K字節(jié)可編程閃爍存儲(chǔ)器 壽命:1000寫(xiě)/擦循環(huán)數(shù)據(jù)保留時(shí)間:10年·全靜態(tài)工作:0Hz-24Hz·三級(jí)程序存儲(chǔ)器鎖定·128*8位部RAM·32可編程I/O線·兩個(gè)16位定時(shí)器/計(jì)數(shù)器·5個(gè)中斷源 ·可編程
8、串行通道·低功耗的閑置和掉電模式·片振蕩器和時(shí)鐘電路 圖4 89C2051引腳排列圖和主要參數(shù)2管腳說(shuō)明:VCC:供電電壓。GND:接地。P0口:P0口為一個(gè)8位漏級(jí)開(kāi)路雙向I/O口,每腳可吸收8TTL門(mén)電流。當(dāng)P1口的管腳第一次寫(xiě)1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。 P1口:P1口是一個(gè)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門(mén)電流。P1口管腳寫(xiě)
9、入1后,被部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。 P2口:P2口為一個(gè)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門(mén)電流,當(dāng)P2口被寫(xiě)“1”時(shí),其管腳被部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫(xiě)時(shí),P2口輸出其
10、特殊功能寄存器的容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。 P3口:P3口管腳是8個(gè)帶部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門(mén)電流。當(dāng)P3口寫(xiě)入“1”后,它們被部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下表所示:口管腳 備選功能P3.0 RXD(串行輸入口)P3.1 TXD(串行輸出口)P3.2 /INT0(外部中斷0)P3.3 /INT1(外部中斷1)P3.4 T0(記時(shí)器0外部輸入)P3.5 T1(記時(shí)器
11、1外部輸入)P3.6 /WR(外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通)P3.7 /RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。 RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。ALE/PROG:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ALE脈沖。如想禁止ALE的輸出
12、可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無(wú)效。 /PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。 /EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間部程
13、序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。 XTAL1:反向振蕩放大器的輸入與部時(shí)鐘工作電路的輸入。 XTAL2:來(lái)自反向振蕩器的輸出。3芯片擦除: 整個(gè)PEROM陣列和三個(gè)鎖定位的電擦除可通過(guò)正確的控制信號(hào)組合,并保持ALE管腳處于低電平10ms 來(lái)完成。在芯片擦操作中,代碼陣列全被寫(xiě)“1”且在任何非空存儲(chǔ)字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。此外,AT89C51設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可
14、選的掉電模式。在閑置模式下,CPU停止工作。但RAM,定時(shí)器,計(jì)數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存RAM的容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個(gè)硬件復(fù)位為止。2 . 2 . 2振蕩器電路單片機(jī)振蕩器電路如圖所指示。 XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片振蕩器。石晶振蕩和瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū)動(dòng)器件,XTAL2應(yīng)不接。有余輸入至部時(shí)鐘信號(hào)要通過(guò)一個(gè)二分頻觸發(fā)器,因此對(duì)外部時(shí)鐘信號(hào)的脈寬無(wú)任何要求,但必須保證脈沖的高低電平要求的寬度。如圖()所示:圖()振蕩電路2 . 2 .
15、 3復(fù)位電路:MCS-51單片機(jī)的復(fù)位條件是在RST端出現(xiàn)正脈沖,并能保持10ms以上的高電平,其復(fù)位電路一般采用上電復(fù)位和開(kāi)關(guān)復(fù)位兩種形式,本系統(tǒng)復(fù)位如圖所示:圖系統(tǒng)復(fù)位電路2 . 2 . 4驅(qū)動(dòng)與顯示電路.緩沖器74LS244本系統(tǒng)為了加大驅(qū)動(dòng)顯示能力采用74LS244作為驅(qū)動(dòng)器,74LS244是一種三態(tài)輸出的八緩沖器和線驅(qū)動(dòng)器。 74LS244緩沖器主要用于三態(tài)輸出的存儲(chǔ)地址驅(qū)動(dòng)器、時(shí)鐘驅(qū)動(dòng)器和總線定向接收器等。其管腳圖如圖7所指示,參數(shù)表如表174LS244是三態(tài)輸出的八緩沖器,由2組、每組四路輸入、輸出構(gòu)成。每組有一個(gè)控制端,由控制端的高或低電平?jīng)Q定該組數(shù)據(jù)被接通還是斷開(kāi)。
16、圖 7 74LS244管腳排列圖.5數(shù)碼管顯示電路本系統(tǒng)數(shù)碼管顯示電路如圖 所示,采用6個(gè)數(shù)碼管,數(shù)碼管管腳排列圖如圖所指示,在電子鐘里能分別顯示小時(shí),分和秒,如13.26.21,在電子秒表中,分別顯示,分,表和毫秒,如99.56.86數(shù)碼管管腳排列圖在本系統(tǒng)中,由于用到的LED顯示器的位數(shù)較多時(shí),為減少I/O口數(shù)目,簡(jiǎn)化電路,降低成本,我們?cè)贚ED顯示器采用動(dòng)態(tài)顯示方式,如圖8所示。動(dòng)態(tài)LED顯示器接口與工作原理 動(dòng)態(tài)LED顯示器的電路連接特點(diǎn)是將各位LED顯示器的所有對(duì)應(yīng)段線并聯(lián)在一起,由一個(gè)8位I/O口控制輸出字段碼,而每位LED顯示器的公共端(共陽(yáng)極點(diǎn)或共陰極點(diǎn))不直接接地或+5V電源
17、,而是分別由另外的I/O口線控制(稱為位選)。LED顯示器的顯示容通過(guò)段碼I/O口和位選I/O口的相互配合控制,以動(dòng)態(tài)掃描顯示的工作方式輸出待顯示的容。我們通過(guò)軟件程序系統(tǒng),發(fā)出控制信號(hào),用P2。0-P2。5動(dòng)態(tài)控制各個(gè)三極管的導(dǎo)通,來(lái)達(dá)到動(dòng)態(tài)掃描的效果。圖8第三章 系統(tǒng)軟件電路設(shè)計(jì)31系統(tǒng)軟件設(shè)計(jì)概述在系統(tǒng)軟件設(shè)計(jì)時(shí),應(yīng)根據(jù)系統(tǒng)軟件功能要求,將系統(tǒng)軟件分成若干個(gè)相對(duì)獨(dú)立的部分,并根據(jù)它們的聯(lián)系和時(shí)間上的關(guān)系,設(shè)計(jì)出合理的軟件總體結(jié)構(gòu)。通常在編制程序前先根據(jù)系統(tǒng)輸入和輸出變量建立起正確的數(shù)學(xué)模型,然后畫(huà)出程序流程框圖,要求流程框圖結(jié)構(gòu)清晰、簡(jiǎn)捷、合理,畫(huà)流程框圖時(shí)還要對(duì)系統(tǒng)資源作具體的分配和說(shuō)
18、明。編制程序時(shí)一般采用自頂向下的程序設(shè)計(jì)技術(shù),先設(shè)計(jì)監(jiān)控程序再設(shè)計(jì)各應(yīng)用程序模塊。各功能程序應(yīng)模塊化、子程序化,這樣不僅便于調(diào)試、,還便于個(gè)性和移植。在進(jìn)行應(yīng)用系統(tǒng)的總體設(shè)計(jì)時(shí),軟件設(shè)計(jì)和硬件設(shè)計(jì)應(yīng)統(tǒng)一考慮,相結(jié)合進(jìn)行。當(dāng)系統(tǒng)的電路設(shè)計(jì)定型后,軟件的任務(wù)也就明確了。下圖為多功能計(jì)時(shí)器系統(tǒng)設(shè)計(jì)流程圖與系統(tǒng)框圖9:開(kāi)始系統(tǒng)定義軟件結(jié)構(gòu)設(shè)計(jì)建立數(shù)學(xué)模型繪制程序流程圖編寫(xiě)程序匯編在線仿真調(diào)試程序是否有錯(cuò)修改程序固化程序結(jié)束圖9 多功能計(jì)時(shí)器系統(tǒng)設(shè)計(jì)流程圖32)系統(tǒng)軟件程序介紹主程序本設(shè)計(jì)中計(jì)時(shí)采有定時(shí)器To中斷完成,其余狀態(tài)循環(huán)調(diào)用顯示子程序,當(dāng)端口開(kāi)按下時(shí),轉(zhuǎn)入相應(yīng)功能程序?;鞒绦驁?zhí)行流程見(jiàn)圖10
19、圖10程序執(zhí)行流程.顯示子程序:數(shù)碼管顯示的數(shù)據(jù)存放在存單元70H75H中。其70H71H存放秒數(shù)據(jù),72H73H存放分?jǐn)?shù)據(jù),74H75H存時(shí)數(shù)據(jù),每一地真址單元均為十進(jìn)制BCD碼。由于采用軟件動(dòng)態(tài)掃描實(shí)現(xiàn)數(shù)據(jù)顯示功能,顯示用十進(jìn)制BCD碼數(shù)據(jù)的對(duì)應(yīng)段碼存放在ROM表中。顯示時(shí),先取出70H75H某一地址中的數(shù)據(jù),然后查得對(duì)應(yīng)的顯示用段碼,并從P0口輸出,P2口將對(duì)應(yīng)的數(shù)碼管選中供電,就能顯示該地址單元的數(shù)據(jù)值。為了顯示小數(shù)點(diǎn)與“一”、“A”等特殊字符,在顯示班級(jí)與計(jì)時(shí)時(shí)采用不同的顯示子程序。定時(shí)器T0中斷服務(wù)程序:定時(shí)器T0用于時(shí)間計(jì)時(shí)。定時(shí)溢,出中斷周期可分設(shè)為50ms和10ms。中斷進(jìn)入
20、后,先判斷是時(shí)鐘計(jì)時(shí)還是秒表計(jì)時(shí),時(shí)鐘計(jì)時(shí)累計(jì)中斷20次(即1s)時(shí),對(duì)秒計(jì)數(shù)單元進(jìn)行加1操作,秒表計(jì)時(shí)每10ms 進(jìn)行加1操作.時(shí)釧計(jì)數(shù)單元地址分別在70H71H(秒)、76H77H(分)和78H79H(時(shí)),最大計(jì)時(shí)值為23時(shí)59分59秒.而秒表計(jì)數(shù)單元地址也在70H71H(0.001毫秒) 、76H77H(秒)和78H79H(分),最大工業(yè)計(jì)時(shí)值為99分59.99秒。7AH單元存放“熄滅符”數(shù)據(jù)(#0AH)。在計(jì)數(shù)單元中采用十進(jìn)制BCD碼計(jì)數(shù),滿60(秒)表功能時(shí)有100)進(jìn)位,T0中斷服務(wù)程序執(zhí)行流程見(jiàn)圖11 圖11T1中斷服務(wù)程序T1中斷服務(wù)程序用于指示調(diào)整單元數(shù)字的亮閃。在時(shí)間調(diào)整
21、狀態(tài)下,每過(guò)0.3 s,將對(duì)應(yīng)單元的顯示數(shù)據(jù)換成“熄滅符”數(shù)據(jù)(#0AH)。這樣在調(diào)整時(shí)間時(shí),對(duì)應(yīng)調(diào)整單元的顯示數(shù)據(jù)會(huì)間隔閃亮。調(diào)時(shí)功能程序調(diào)時(shí)功能程序的設(shè)計(jì)方法是:按下P1.0口按鍵,若按下時(shí)間短于1s,則進(jìn)入省電狀態(tài)(數(shù)碼管不亮,時(shí)鐘不停);否則進(jìn)入調(diào)分狀態(tài),等待操作,此時(shí)計(jì)時(shí)器停止走動(dòng)。當(dāng)再按下按鈕時(shí),若按下時(shí)間短于0.5s,則時(shí)間加1分;若按下時(shí)間長(zhǎng)于0.5s,則進(jìn)入小時(shí)調(diào)整狀態(tài)。在小時(shí)調(diào)整狀態(tài)下,當(dāng)按鍵按下的時(shí)間長(zhǎng)于0.5s時(shí),退出調(diào)整狀態(tài),時(shí)鐘繼續(xù)走動(dòng)。P1.1口按鍵在調(diào)時(shí)狀態(tài)下可實(shí)現(xiàn)減功能。時(shí)鐘秒表功能程序在正常計(jì)時(shí)狀態(tài)下,若按下P1.1口按鍵,則進(jìn)行時(shí)鐘秒表功能的轉(zhuǎn)換,轉(zhuǎn)換后計(jì)
22、時(shí)從零開(kāi)始。當(dāng)按下P1.2口的按鍵時(shí),可實(shí)現(xiàn)清、計(jì)時(shí)啟動(dòng)、暫停功能。第四章 系統(tǒng)調(diào)試與調(diào)試與抗干擾設(shè)計(jì)4 .1硬件調(diào)試硬件調(diào)試時(shí),可先檢查印制與焊接的質(zhì)量情況,在檢查無(wú)誤后,可通電檢查顯示器的點(diǎn)亮狀況,若亮度不理想,可以調(diào)整口的電阻大小,一般情況下,取電阻即可獲得滿意的亮度效果。實(shí)驗(yàn)室制作時(shí),可結(jié)合示波器測(cè)試晶振與、端口的波形情況,進(jìn)行綜合硬件測(cè)試分析。我們對(duì)硬件電路進(jìn)行了調(diào)試,主要包括:(1) 在焊接前元器件要一一檢查是否完好,在焊接過(guò)程中逐一檢查電路是否接通。(2) 管座、元件焊接完畢,還要仔細(xì)檢查元件面各元件之間裸露部分有無(wú)相互接觸現(xiàn)象,焊接面的各捍點(diǎn)間、焊點(diǎn)與近鄰線有無(wú)連接,對(duì)布線密或
23、未加陰處理的應(yīng)注意檢查,這此可能造成短路的原因。(3) 在完成檢查后,先空載上電(未插芯片),檢查線路各管腳級(jí)插件的電位是否正常,特別是單片機(jī)管腳注上的各點(diǎn)電位(若有高壓,聯(lián)機(jī)調(diào)試時(shí)會(huì)通過(guò)仿真線進(jìn)入仿真系統(tǒng),損壞有關(guān)器件)。若一切下沉將芯片插入各管座,再通電檢查各點(diǎn)電壓是否達(dá)到要求,邏輯電平是否符合電路或器件的邏輯關(guān)系。若有問(wèn)題,掉電后再認(rèn)真檢查故障原因。4 .2軟件調(diào)試軟件調(diào)試在Wave E000編譯器下進(jìn)行,源程序編譯與仿真調(diào)試應(yīng)分段或以子程序?yàn)閱挝灰粋€(gè)一個(gè)進(jìn)行,最后可結(jié)合硬件實(shí)時(shí)調(diào)試。系統(tǒng)調(diào)試包括硬件調(diào)試和軟件調(diào)試。硬件調(diào)試的任務(wù)是排除系統(tǒng)的硬件電路故障,包括設(shè)計(jì)性錯(cuò)誤和工藝性故障。軟件
24、調(diào)試是利用開(kāi)發(fā)工具進(jìn)行在線仿真調(diào)試,除發(fā)現(xiàn)和解決程序錯(cuò)誤外,也可以發(fā)現(xiàn)硬件故障。程序調(diào)試一般是一個(gè)模塊一個(gè)模塊地進(jìn)行,一個(gè)子程序一個(gè)子程度地調(diào)試,最后聯(lián)起來(lái)統(tǒng)調(diào)。利用開(kāi)發(fā)工具的單步和斷點(diǎn)運(yùn)行方式,通過(guò)檢查應(yīng)用系統(tǒng)的CPU現(xiàn)場(chǎng)、RAM和SFR的容以與I/O口的狀態(tài),來(lái)檢查程序的執(zhí)行結(jié)果和系統(tǒng)I/O設(shè)備的狀態(tài)變化是否正常,從中發(fā)現(xiàn)程序的邏輯錯(cuò)誤,轉(zhuǎn)移地址錯(cuò)誤以與隨機(jī)的錄入錯(cuò)誤等。也可以發(fā)現(xiàn)硬件設(shè)計(jì)與工藝錯(cuò)誤和軟件算法錯(cuò)誤。在調(diào)試過(guò)程中,要不斷調(diào)整、修改系統(tǒng)的硬件和軟件,直到其正確為止。聯(lián)機(jī)調(diào)試運(yùn)行正常后,將軟件固化到EPROM中,脫機(jī)運(yùn)行,并到生產(chǎn)現(xiàn)場(chǎng)投入實(shí)際工作,檢驗(yàn)其可靠性和抗干擾能力,直到完
25、全滿足要求,系統(tǒng)才算研制成功。4 3系統(tǒng)抗干擾設(shè)計(jì)在提高硬件系統(tǒng)抗干擾能力的同時(shí),軟件抗干擾以其設(shè)計(jì)靈活、節(jié)省硬件資源、可靠性好越來(lái)越受到重視。下面以MCS-51單片機(jī)系統(tǒng)為例,對(duì)微機(jī)系統(tǒng)軟件抗干擾方法進(jìn)行研究。 1 軟件抗干擾方法的研究 在工程實(shí)踐中,軟件抗干擾研究的容主要是: 一、消除模擬輸入信號(hào)的嗓聲(如數(shù)字濾波技術(shù));二、程序運(yùn)行混亂時(shí)使程序重入正軌的方法。本文針對(duì)后者提出了幾種有效的軟件抗干擾方法。 1.1 指令冗余 CPU取指令過(guò)程是先取操作碼,再取操作數(shù)。當(dāng)PC受干擾出現(xiàn)
26、錯(cuò)誤,程序便脫離正常軌道“亂飛”,當(dāng)亂飛到某雙字節(jié)指令,若取指令時(shí)刻落在操作數(shù)上,誤將操作數(shù)當(dāng)作操作碼,程序?qū)⒊鲥e(cuò)。若“飛” 到了三字節(jié)指令,出錯(cuò)機(jī)率更大。 在關(guān)鍵地方人為插入一些單字節(jié)指令,或?qū)⒂行巫止?jié)指令重寫(xiě)稱為指令冗余。通常是在雙字節(jié)指令和三字節(jié)指令后插入兩個(gè)字節(jié)以上的NOP。這樣即使亂飛程序飛到操作數(shù)上,由于空操作指令NOP的存在,避免了后面的指令被當(dāng)作操作數(shù)執(zhí)行,程序自動(dòng)納入正軌。 此外,對(duì)系統(tǒng)流向起重要作用的指令如RET、 RETI、LCALL、LJMP、JC等指令之前插入兩條NOP,也可將亂飛程序納入正軌,確保這些重要指令的執(zhí)
27、行。 1.2 攔截技術(shù) 所謂攔截,是指將亂飛的程序引向指定位置,再進(jìn)行出錯(cuò)處理。通常用軟件陷阱來(lái)攔截亂飛的程序。因此先要合理設(shè)計(jì)陷阱,其次要將陷阱安排在適當(dāng)?shù)奈恢谩?#160; 1.2.1 軟件陷阱的設(shè)計(jì) 當(dāng)亂飛程序進(jìn)入非程序區(qū),冗余指令便無(wú)法起作用。通過(guò)軟件陷阱,攔截亂飛程序,將其引向指定位置,再進(jìn)行出錯(cuò)處理。軟件陷阱是指用來(lái)將捕獲的亂飛程序引向復(fù)位入口地址0000H的指令。通常在EPROM中非程序區(qū)填入以下指令作為軟件陷阱: &
28、#160; NOP NOP
29、60; LJMP 0000H 其機(jī)器碼為0000020000。 1.2.2 陷阱的安排 通常在程序中未使用的EPROM空間填0000020000。最后一條應(yīng)填入020000,當(dāng)亂飛程序 落到此區(qū),即可自動(dòng)入軌。在用戶程序區(qū)各模塊之間的空余單元也可填入陷阱指令。當(dāng)使用的中斷因干擾而開(kāi)放時(shí),在對(duì)應(yīng)的中斷服務(wù)程序中設(shè)置軟件陷阱,能與時(shí)捕獲錯(cuò)誤的中斷。如某應(yīng)用系統(tǒng)雖未用到外部中斷1,外部中斷1的中斷服務(wù)程序可為如下形式:
30、160; NOP NOP
31、0; RETI 返回指令可用“RETI”,也可用“LJMP 0000H”。如果故障診斷程序與系統(tǒng)自恢復(fù)程序的設(shè)計(jì)可靠、 完善,用“LJMP 0000H”作返回指令可直接進(jìn)入故障診斷程序,盡早地處理故障并恢復(fù)程序的運(yùn)行。 考慮到程序存貯器的容量,軟件陷阱一般1K空間有2-3個(gè)就可以進(jìn)行有效攔截。 1.3 軟件“看門(mén)狗”技術(shù)
32、0; 若失控的程序進(jìn)入“死循環(huán)”,通常采用“看門(mén)狗”技術(shù)使程序脫離“死循環(huán)”。通過(guò)不斷檢測(cè)程序循環(huán)運(yùn)行時(shí)間,若發(fā)現(xiàn)程序循環(huán)時(shí)間超過(guò)最大循環(huán)運(yùn)行時(shí)間,則認(rèn)為系統(tǒng)陷入“死循環(huán)”,需進(jìn)行出錯(cuò)處理。 “看門(mén)狗”技術(shù)可由硬件實(shí)現(xiàn),也可由軟件實(shí)現(xiàn)。 在工業(yè)應(yīng)用中,嚴(yán)重的干擾有時(shí)會(huì)破壞中斷方式控制字,關(guān)閉中斷。則系統(tǒng)無(wú)法定時(shí)“喂狗”,硬件看門(mén)狗電路失效。而軟件看門(mén)狗可有效地解決這類問(wèn)題。 在實(shí)際應(yīng)用中,采用環(huán)形中斷監(jiān)視系統(tǒng)。用定時(shí)器T0監(jiān)視定時(shí)器T1,用定時(shí)器T1監(jiān)視主程序,主程序監(jiān)視定時(shí)器T0。采用這種環(huán)形結(jié)構(gòu)的軟件“看門(mén)狗”具有良好的抗干擾性能
33、,大大提高了系統(tǒng)可靠性。對(duì)于需經(jīng)常使用T1定時(shí)器進(jìn)行串口通訊的測(cè)控系統(tǒng),則定時(shí)器T1不能進(jìn)行中斷,可改由串口中斷進(jìn)行監(jiān)控(如果用的是MCS-52系列單片機(jī),也可用T2代替T1進(jìn)行監(jiān)視)。這種軟件“看門(mén)狗”監(jiān)視原理是:在主程序、T0中斷服務(wù)程序、T1中斷服務(wù)程序中各設(shè)一運(yùn)行觀測(cè)變量,假設(shè)為MWatch、T0Watch 、T1Watch,主程序每循環(huán)一次,MWatch加,同樣T0、T1中斷服務(wù)程序執(zhí)行一次,T0Watch、 T1Watch加。在T0中斷服務(wù)程序過(guò)檢測(cè)T1Watch的變化情況判定T1運(yùn)行是否正常,在T1中斷服務(wù)程序中檢測(cè)MWatch的變化情況判定主程序是否正常運(yùn)行,在主程序過(guò)檢測(cè)T0
34、Watch的變化情況判別T0是否正常工作。若檢測(cè)到某觀測(cè)變量變化不正常,比如應(yīng)當(dāng)加1而未加1,則轉(zhuǎn)到出錯(cuò)處理程序作排除故障處理。當(dāng)然,對(duì)主程序最大循環(huán)周期、定時(shí)器T0和T1定時(shí)周期應(yīng)予以全盤(pán)合理考慮。 2 系統(tǒng)故障處理、自恢復(fù)程序的設(shè)計(jì) 單片機(jī)系統(tǒng)因干擾復(fù)位或掉電后復(fù)位均屬非正常復(fù)位,應(yīng)進(jìn)行故障診斷并能自動(dòng)恢復(fù)非正常復(fù)位前的狀態(tài)。 2.1 非正常復(fù)位的識(shí)別 程序的執(zhí)行總是從0000H開(kāi)始,導(dǎo)致程序從 0000H開(kāi)始執(zhí)行有四種可能:一、系統(tǒng)開(kāi)機(jī)上電復(fù)位;二、軟件故障復(fù)位;三、看門(mén)
35、狗超時(shí)未喂狗硬件復(fù)位; 四、任務(wù)正在執(zhí)行中掉電后來(lái)電復(fù)位。四種情況中除第一種情況外均屬非正常復(fù)位,需加以識(shí)別。 2.1.1 硬件復(fù)位與軟件復(fù)位的識(shí)別 此處硬件復(fù)位指開(kāi)機(jī)復(fù)位與看門(mén)狗復(fù)位,硬件復(fù)位對(duì)寄存器有影響,如復(fù)位后PC=0000H, SP07H,PSW00H等。而軟件復(fù)位則對(duì)SP、SPW無(wú)影響。故對(duì)于微機(jī)測(cè)控系統(tǒng),當(dāng)程序正常運(yùn)行時(shí),將SP設(shè)置地址大于07H,或者將PSW的第5位用戶標(biāo)志位在系統(tǒng)正常運(yùn)行時(shí)設(shè)為1。那么系統(tǒng)復(fù)位時(shí)只需檢測(cè)PSW.5標(biāo)志位或SP值便可判此是否硬件復(fù)位。圖12是采用PSW.5作上電標(biāo)志位判別硬、軟件復(fù)位的程序流程圖。
36、圖12 硬、軟件復(fù)位識(shí)別流程圖此外,由于硬件復(fù)位時(shí)片RAM狀態(tài)是隨機(jī)的,而軟件復(fù)位片RAM則可保持復(fù)位前狀態(tài),因此可選取片某一個(gè)或兩個(gè)單元作為上電標(biāo)志。設(shè) 40H用來(lái)做上電標(biāo)志,上電標(biāo)志字為78H,若系統(tǒng)復(fù)位后40H單元容不等于78H,則認(rèn)為是硬件復(fù)位,否則認(rèn)為是軟件復(fù)位,轉(zhuǎn)向出錯(cuò)處理。若用兩個(gè)單元作上電標(biāo)志,則這種判別方法的可靠性更高。 2.1.2 開(kāi)機(jī)復(fù)位與看門(mén)狗故障復(fù)位的識(shí)別 開(kāi)機(jī)復(fù)位與看門(mén)狗故障復(fù)位因同屬硬件復(fù)位, 所以要想予以正確識(shí)別,一般要借助非易失性RAM或者EEROM。當(dāng)系統(tǒng)正常運(yùn)行時(shí),設(shè)置一可掉電保護(hù)的觀測(cè)單元。當(dāng)系統(tǒng)正常運(yùn)行時(shí)
37、,在定時(shí)喂狗的中斷服務(wù)程序中使該觀測(cè)單元保持正常值(設(shè)為 AAH),而在主程中將該單元清零,因觀測(cè)單元掉電可保護(hù),則開(kāi)機(jī)時(shí)通過(guò)檢測(cè)該單元是否為正常值可判斷是否看門(mén)狗復(fù)位。 2.1.3 正常開(kāi)機(jī)復(fù)位與非正常開(kāi)機(jī)復(fù)位的識(shí)別 識(shí)別測(cè)控系統(tǒng)中因意外情況如系統(tǒng)掉電等情況引起的開(kāi)機(jī)復(fù)位與正常開(kāi)機(jī)復(fù)位,對(duì)于過(guò)程控制系統(tǒng)尤為重要。如某以時(shí)間為控制標(biāo)準(zhǔn)的測(cè)控系統(tǒng),完成一次測(cè)控任務(wù)需1小時(shí)。在已執(zhí)行測(cè)控50分鐘的情況下,系統(tǒng)電壓異常引起復(fù)位,此時(shí)若系統(tǒng)復(fù)位后又從頭開(kāi)始進(jìn)行測(cè)控則會(huì)造成不必要的時(shí)間消耗。因此可通過(guò)一監(jiān)測(cè)單元對(duì)當(dāng)前系統(tǒng)的運(yùn)行狀態(tài)、系統(tǒng)時(shí)間予以監(jiān)控,將控制
38、過(guò)程分解為若干步或若干時(shí)間段,每執(zhí)行完一步或每運(yùn)行一個(gè)時(shí)間段則對(duì)監(jiān)測(cè)單元置為關(guān)機(jī)允許值,不同的任務(wù)或任務(wù)的不同階段有不同的值,若系統(tǒng)正在進(jìn)行測(cè)控任務(wù)或正在執(zhí)某時(shí)間段,則將監(jiān)測(cè)單元置為非正常關(guān)機(jī)值。那么系統(tǒng)復(fù)位后可據(jù)此單元判系統(tǒng)原來(lái)的運(yùn)行狀態(tài),并跳到出錯(cuò)處理程序中恢復(fù)系統(tǒng)原運(yùn)行狀態(tài)。 2.2 非正常復(fù)位后系統(tǒng)自恢復(fù)運(yùn)行的程序設(shè)計(jì) 對(duì)順序要求嚴(yán)格的一些過(guò)程控制系統(tǒng),系統(tǒng)非正常復(fù)位否,一般都要求從失控的那一個(gè)模塊或任務(wù)恢復(fù)運(yùn)行。所以測(cè)控系統(tǒng)要作好重要數(shù)據(jù)單元、參數(shù)的備份,如系統(tǒng)運(yùn)行狀態(tài)、系統(tǒng)的進(jìn)程值、當(dāng)前輸入、輸出的值,當(dāng)前時(shí)鐘值、觀測(cè)單元值等,這些數(shù)據(jù)既要定時(shí)
39、備份,同時(shí)若有修改也應(yīng)立即予以備份。 當(dāng)在已判別出系統(tǒng)非正常復(fù)位的情況下,先要恢復(fù)一些必要的系統(tǒng)數(shù)據(jù),如顯示模塊的初始化、片外擴(kuò)展芯片的初始化等。其次再對(duì)測(cè)控系包括顯示界面等的恢復(fù)。之后再把復(fù)位前的任務(wù)、參數(shù)、運(yùn)行時(shí)間等恢復(fù), 再進(jìn)入系統(tǒng)運(yùn)行狀態(tài)。 應(yīng)當(dāng)說(shuō)明的是,真實(shí)地恢復(fù)系統(tǒng)的運(yùn)行狀態(tài)需 要極為細(xì)致地對(duì)系統(tǒng)的重要數(shù)據(jù)予以備份,并加以數(shù)據(jù)可靠性檢查,以保證恢復(fù)的數(shù)據(jù)的可靠性。 其次,對(duì)多任務(wù)、多進(jìn)程測(cè)控系統(tǒng),數(shù)據(jù)的恢復(fù)需考慮恢復(fù)的次序問(wèn)題,筆者實(shí)際應(yīng)用的數(shù)據(jù)恢復(fù)過(guò)程流程圖如圖13所示。統(tǒng)的系統(tǒng)狀態(tài)、運(yùn)行參數(shù)等予以恢復(fù), 圖13
40、系統(tǒng)自恢復(fù)程序流程圖圖中恢復(fù)系統(tǒng)基本數(shù)據(jù)是指取出備份的數(shù)據(jù)覆蓋當(dāng)前的系統(tǒng)數(shù)據(jù)。系統(tǒng)基本初始化是指對(duì)芯片、顯示、輸入輸出方式等進(jìn)行初始化,要注意輸入輸出的初始化不應(yīng)造成誤動(dòng)作。而復(fù)位前任務(wù)的初始化是指任務(wù)的執(zhí)行狀態(tài)、運(yùn)行時(shí)間等。 3 結(jié)束語(yǔ) 對(duì)于軟件抗干擾的一些其它常用方法如數(shù)字濾波、RAM數(shù)據(jù)保護(hù)與糾錯(cuò)等,限于篇幅,本文未作討論。在工程實(shí)踐常都是幾種抗干擾方法并用,互相補(bǔ)充完善,才能取得較好的抗干擾效果。從根本上來(lái)說(shuō),硬件抗干擾是主動(dòng)的,而軟件是抗干擾是被動(dòng)的。細(xì)致周到地分析干擾源,硬件與軟件抗干擾相結(jié)合,完善系統(tǒng)監(jiān)控程序,設(shè)計(jì)一穩(wěn)定可靠的單片
41、機(jī)系統(tǒng)是完全可行的。4 .4性能分析按照設(shè)計(jì)程序分析,顯示器動(dòng)態(tài)掃描的頻率約為z,實(shí)際使用觀察時(shí)完全沒(méi)有閃爍。由于計(jì)時(shí)中斷程序中加了中斷延時(shí)誤差處理,所以實(shí)際計(jì)時(shí)的走時(shí)精度非常高,可滿足多種場(chǎng)合的應(yīng)用需要;另外上電時(shí)的班級(jí)、學(xué)號(hào)、制作日期滾動(dòng)顯示可以方便學(xué)生設(shè)計(jì)作業(yè)的辯認(rèn)區(qū)別。系統(tǒng)程序清單中斷入口程序主程序1s計(jì)時(shí)程序T0中斷服務(wù)程序秒表計(jì)時(shí)程序閃動(dòng)調(diào)時(shí)程序T1中斷服務(wù)程序,用作時(shí)間調(diào)整時(shí)調(diào)整單元閃爍指示加1子程序分減1子程序時(shí)減1子程序清0程序時(shí)鐘調(diào)整程序顯示程序ST子程序,上電時(shí)顯示年月班級(jí)用,采用移動(dòng)顯示延時(shí)程序控制源程序清單以下是秒表時(shí)鐘計(jì)時(shí)器的控制源程序AT89C5秒表時(shí)鐘程序定時(shí)器
42、、溢出周期為ms(ms),T0為調(diào)整時(shí)閃爍用,1.0、P1.1、P1.2為調(diào)整按鈕,口為字符輸出口,采用共陽(yáng)顯示管。中斷入口程序ORG 0000H 程序執(zhí)行開(kāi)始地址LJMP START 跳到標(biāo)號(hào)START執(zhí)行ORG 0003H駛 外中斷中斷程序入口RETI 外中斷中斷返回ORG 000BH 定時(shí)器T0中斷程序入口LJMP INTT0 跳至INTT0執(zhí)行ORG 0013H 外中斷中斷程序入口RETI 外斷中斷返回ORG 001BH 定時(shí)器T1中斷程序入口LJMP INTT1 跳至INTT1執(zhí)行ORG 0023H 串行中斷程序入口地址RETI 串行中斷程序返回主程序START: LCALL ST
43、上電顯示年月日與班級(jí)學(xué)號(hào) MOV R0, #70H清70H7AH共11個(gè)存單元 MOV R7, #0BHCldisp: MOV R0, #00h INC R0 DJNZ R7,CLdisp MOV 20H,#00H 清20H(標(biāo)志用) MOV 7AH,#0AH 放入“熄滅符”數(shù)據(jù) MOV TMOD,#11H設(shè)T1、T1為16時(shí)器 MOV TL0,#0B0H50定時(shí)初值(計(jì)時(shí)用) MOV TH0,#3CH50定時(shí)初值 MOV TL1,#0B0H50ms定時(shí)初值(T1爍定時(shí)用) MOV TH1,#3CH 50ms定時(shí)初值 SETB EA 總中斷開(kāi)放 SETB ET0 允許T0中斷 SETB TR0
44、 開(kāi)啟T0定時(shí)器 MOV R4,#14H 1s定時(shí)用初值(50msX20)START1: LCALL DISPLAY 調(diào)用顯示子程序 JNB P1.0,SETMM1 P1.0口為0時(shí),轉(zhuǎn)時(shí)間調(diào)整程序 JNB P1.1,FUNSS 秒表功能,P1.1按鍵調(diào)時(shí)時(shí)作減1操作 JNB P1.2,FUNPT STOP,PUSE,CLR SJMP START1 P1.0口為1時(shí)跳回START1SETMM1: LJMP SETMM 轉(zhuǎn)到時(shí)間調(diào)整程序SETMMFUNSS: LCALL DS20MS P1.1,start1WAIT11: JNB P1.1,WAIT11 CPL 03H MOV 70H,#00H
45、MOV 71H,#00H MOV 76H,#00H MOV 77H,#00H MOV 78H,#00H MOV 79H,#00H AJMP START1FUNPT: LCALL DS20MS P1.2,START1WAIT22: JNB P1.2,WAIT21 CLR ET0 CLR TR0WAIT33: P1.2,WAIT31 LCALL DS20MS P1.2,WAIT33WAIT66: JNB P1.2,WAIT61 MOV R0,#70H 清70H79H共10個(gè)存單元 MOV R7,#0AHCLEARP: MOV R0,#00H INC R0 DJNZ R7,CLEARPWAIT44:
46、 P1.2,WAIT41 LCALL DS20MS P1.2,WAIT44WAIT55: JNB P1.2,WAIT51 SETB ET0 SETB TR0 AjmP START1WAIT21: LCALL DISPLAY AJMP WAIT22WAIT31: LCALL DISPLAY AJMP WAIT33wait41: lcall display ajmp wait44WAIT51: LCALL DISPLAY AJMP WAIT55WAIT61: LCALL DISPLAY AJMP WAIT66;1s計(jì)時(shí)程序T0中斷服務(wù)程序INTT0: PUSH ACC 累加器入棧保護(hù) PUSH P
47、SW 狀態(tài)字入棧保護(hù) CLR ET0 關(guān)T0中斷允許 CLR TR0 關(guān)閉定器T0 03H,FSS 標(biāo)志為1轉(zhuǎn)秒表處理程序(10ms定時(shí)) MOV A,#0B7H 中斷響應(yīng)時(shí)間同步修正 ADD A,TL0 低8位初值修正 MOV TL0,A 重裝初值(低8位修正值) MOV A,#3CH 高8位初值修正 ADDC A,TH0 MOV TH0,A 重裝初值(高8位修正值) SETB TR0 開(kāi)啟定時(shí)器T0 DJNZ R4,OUTT0 20次中斷未到中斷退出ADDSS: MOV R4,#14H 20次中斷到(1s)重賦初值 MOV R0,#71H 指向秒計(jì)時(shí)單元(71H79H) ACALL ADD
48、1 調(diào)用加1程序(加1s操作) MOV A,R3 秒數(shù)據(jù)放入A(R3為2位十進(jìn)制數(shù)組合) CLR C 清進(jìn)位標(biāo)志 CJNE A,#60H,ADDMMADDMM: JC OUTT0 短于60s時(shí)中斷退出 AcALL CLR0 長(zhǎng)于或等于60s時(shí)對(duì)秒計(jì)時(shí)單元清0 MOV R0,#77H 指向分計(jì)時(shí)單元(76H77H) ACALL ADD1 分計(jì)時(shí)單元加1min MOV A,R3 分?jǐn)?shù)據(jù)放入A CLR C 清進(jìn)位標(biāo)志 CJNE A,#60H,ADDHHADDHH: JC OUTT0 短于60min時(shí)中斷退出 ACALL CLR0 長(zhǎng)于或等于60min時(shí)分計(jì)時(shí)單元清0 MOV R0,#79H 指幾小時(shí)
49、計(jì)時(shí)單元(78H79H) ACALL ADD1 小時(shí)計(jì)時(shí)單元加1h MOV A,R3 時(shí)數(shù)據(jù)放入A CLR C 清進(jìn)位標(biāo)志 03H,OUTT0 秒表時(shí)最大數(shù)為99 CJNE A,#24H,HOURHOUR: JC OUTT0 短于24h中斷退出 ACALL CLR0 長(zhǎng)于或等于24h小時(shí)計(jì)時(shí)單元清0OUTT0: MOV 72H,76H 中斷退出時(shí)將分、時(shí)計(jì)時(shí)單元數(shù)據(jù)移 MOV 73H,77H 入對(duì)應(yīng)顯示單元 MOV 74H,78H MOV 75H,79H POP PSW 恢復(fù)狀態(tài)字(出棧) POP ACC 恢復(fù)累加器 SETB ET0 開(kāi)放T0中斷 RETI 中斷返回秒表計(jì)時(shí)程序(10min加1),低2位為0.1、0.01秒,中間2位為秒,最高壓鍋位為分最大計(jì)數(shù)值為99分59.99秒FSS: MOV A,#0F7H 重裝初值(10ms),中斷響應(yīng)時(shí)間同步修正 ADD A,TL0 低8位初值修正 MOV TL0,A 重裝初值(低8位修正值) MOV A,#0D8H 高8位初值修正 ADDC A,TH0 mov th0,a 重裝初值(高8位修正值) setb tr0 開(kāi)啟定時(shí)器T0 MOV R0,#71H 指向秒計(jì)時(shí)單元(71H72H) ACALL ADD1 調(diào)用加1程序(加1s操作) CLR C MOV A,R3 JZ
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年標(biāo)準(zhǔn)股權(quán)轉(zhuǎn)讓意向協(xié)議模板版
- 2024年標(biāo)準(zhǔn)化污水處理廠綜合運(yùn)營(yíng)管理合同版
- 嶺南師范學(xué)院《中小學(xué)建筑設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 16 田忌賽馬 教學(xué)實(shí)錄-2023-2024學(xué)年統(tǒng)編版語(yǔ)文五年級(jí)下冊(cè)
- 第八單元 到實(shí)驗(yàn)室去:粗鹽中難溶性雜質(zhì)的去除教學(xué)實(shí)錄-2023-2024學(xué)年九年級(jí)化學(xué)魯教版下冊(cè)
- 2024年度金融科技聯(lián)合體投標(biāo)協(xié)議3篇
- 2024年校園食品及個(gè)人衛(wèi)生行為準(zhǔn)則2篇
- 六盤(pán)水師范學(xué)院《環(huán)境與健康》2023-2024學(xué)年第一學(xué)期期末試卷
- 土方出渣車輛運(yùn)輸合同
- 2024至2030年中國(guó)檢測(cè)鼓行業(yè)投資前景及策略咨詢研究報(bào)告
- 初中物理教師個(gè)人校本研修工作計(jì)劃(20篇)
- 第七章消費(fèi)者權(quán)益
- 齊魯工業(yè)大學(xué)《食品原料學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 無(wú)薪留職協(xié)議樣本
- 工業(yè)區(qū)污水凈化服務(wù)合同
- 《建設(shè)項(xiàng)目工程總承包合同示范文本(試行)》GF-2011-0216
- 幼兒園中班音樂(lè)活動(dòng)《小看戲》課件
- 2024年下半年貴州六盤(pán)水市直事業(yè)單位面向社會(huì)招聘工作人員69人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 實(shí)+用法律基礎(chǔ)-形成性考核任務(wù)一-國(guó)開(kāi)(ZJ)-參考資料
- 2024年小學(xué)校長(zhǎng)工作總結(jié)(3篇)
- 江蘇省揚(yáng)州市2023-2024學(xué)年高一上學(xué)期1月期末考試 物理 含解析
評(píng)論
0/150
提交評(píng)論