項(xiàng)目七制作可定時(shí)定鬧的數(shù)字鐘_第1頁
項(xiàng)目七制作可定時(shí)定鬧的數(shù)字鐘_第2頁
項(xiàng)目七制作可定時(shí)定鬧的數(shù)字鐘_第3頁
項(xiàng)目七制作可定時(shí)定鬧的數(shù)字鐘_第4頁
項(xiàng)目七制作可定時(shí)定鬧的數(shù)字鐘_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、單片機(jī)原理與應(yīng)用教材項(xiàng)目七制作可定時(shí)定鬧的數(shù)字鐘本項(xiàng)目完成的數(shù)字鐘為24小時(shí)制時(shí)間顯示,可校準(zhǔn)(按鍵)、可定時(shí)、定鬧、定時(shí)時(shí)間掉電保存等。涉及數(shù)碼顯示、中斷系統(tǒng)、定時(shí)器、按鍵輸入、E2PR0M讀/寫、數(shù)據(jù)運(yùn)算處理等單片機(jī)綜合知識(shí),是一個(gè)相對(duì)復(fù)雜的實(shí)用程序。由此展開,可得到如打鈴儀、校園定時(shí)廣播系統(tǒng)、倒計(jì)時(shí)器及與時(shí)間控制有關(guān)的工業(yè)控制器等產(chǎn)品項(xiàng)目;可與項(xiàng)目三有機(jī)合并,成為一個(gè)適合比賽用的綜合顯示牌?!局R(shí)目標(biāo)】知道串行總線的概念。會(huì)用E2PR0M,重點(diǎn)為AT24系列芯片的讀/寫時(shí)序。知道并會(huì)用基本的硬件/軟件措施增強(qiáng)單片機(jī)系統(tǒng)的可靠性?!炯寄苣繕?biāo)】完成數(shù)字鐘的設(shè)計(jì)。擴(kuò)展數(shù)字鐘功能。學(xué)會(huì)單片機(jī)項(xiàng)目

2、開發(fā)規(guī)劃步驟。任務(wù)一I2C總線與AT24C02【任務(wù)目標(biāo)】知道I2C通信、時(shí)序概念。學(xué)會(huì)AT24C02讀/寫步驟。學(xué)會(huì)看器件手冊(cè)、了解時(shí)序。【讀一讀】知識(shí)I2C總線概念與AT24C021.I2C總線概念I(lǐng)2C總線協(xié)議即雙向數(shù)據(jù)通信“握手”約定,這種約定允許通過一個(gè)簡(jiǎn)單的兩線系統(tǒng)總線在各種設(shè)備之間進(jìn)行通信操作。I2C總線實(shí)際上已經(jīng)成為一個(gè)國(guó)際標(biāo)準(zhǔn),在超過數(shù)百種不同的IC上實(shí)現(xiàn)并得到50多家公司的認(rèn)可,下面是fc總線的一些特征。1)只要求兩條總線線路:一條串行數(shù)據(jù)線(SDA),一條串行時(shí)鐘線CSCL)。2)每個(gè)連接到總線的器件都可以通過唯一的地址作為發(fā)送器或接收器。3)串行8位雙向數(shù)據(jù)傳輸速率在標(biāo)

3、準(zhǔn)模式時(shí)可達(dá)100Kb/s。2.AT24C02AT24C但是電可擦除的串行只讀存儲(chǔ)器(E2PR0M),可存儲(chǔ)256個(gè)字節(jié)內(nèi)容,每個(gè)字節(jié)為8位。該器件特點(diǎn):兩線串行接口、雙向數(shù)據(jù)傳輸、硬件數(shù)據(jù)寫保護(hù)、8字節(jié)頁寫方式等??杀WC10萬次擦寫周期及有效保存數(shù)據(jù)10年。由于這種器件上電后可在線編程數(shù)據(jù)、失電時(shí)長(zhǎng)期保存,故被廣泛用于智能儀表、信息存儲(chǔ)卡、掉電保護(hù)等各個(gè)領(lǐng)域。AT24C02屬AT24CXX系列的一個(gè)型號(hào),該系列其他型號(hào)的芯片功能均與之兼容,僅存儲(chǔ)空間大小有區(qū)別,如AT24C0l為128字節(jié)。對(duì)AT24C02引腳功能闡述如下。AT24C02引腳排列如圖7-1所示。圖7-1AT24C02引腳排列

4、1)串行時(shí)鐘(SCL)0SCL為串行時(shí)鐘端,時(shí)鐘信號(hào)用于對(duì)輸入和輸出數(shù)據(jù)的同步,寫入串行E2PR0M的數(shù)據(jù)用其上升沿同步,輸出數(shù)據(jù)用其下降沿同步。2)串行數(shù)據(jù)(SDA)。SDA為串行數(shù)據(jù)輸入/輸出端。該引腳是漏極開路驅(qū)動(dòng),可以與其他漏極開路或集電極開路的器件“線或”連接。3)寫保護(hù)端CWP)。該引腳用于硬件數(shù)據(jù)保護(hù)。當(dāng)其接地時(shí),可對(duì)整個(gè)器件進(jìn)行正常的讀/寫操作;當(dāng)其接正電源Vcc時(shí),芯片具有數(shù)據(jù)寫保護(hù)功能,數(shù)據(jù)只能讀出不能寫入。4)器件地址CA0、Al、A2)。片選或頁面選擇地址輸入,用于器件的選擇。在一個(gè)單總線上最多可掛8個(gè)AT24C02器件。每個(gè)器件通過引腳A0、Al,A2的不同連接(接V

5、cc或接地)來設(shè)置不同器件的地址,如圖7-2所示。圖7-2不同接法的器件地址5)電源(VCC)0AT24C02標(biāo)準(zhǔn)電壓為+5V。3.AT24C02編程步驟AT24C02遵守I2C總線協(xié)議,其讀/寫時(shí)序如圖7-3所示。圖7-3I2C時(shí)序編程步驟如下。1)主控器件發(fā)送一個(gè)起始信號(hào)啟動(dòng)一次數(shù)據(jù)傳送,啟動(dòng)時(shí)序規(guī)范如圖7-4(a)所示。圖7-424C02定時(shí)規(guī)范2)發(fā)送命令字節(jié),其格式如下:該命令字節(jié)的D7D4位為固定部分,規(guī)定為1010;D3D1為受控器件的地址編碼(如圖7-2所示)D0位表明隨后的操作是寫或讀,D0位等于1為讀,D0位等于0為寫。例如對(duì)圖7-2(a)接法的24C02器件發(fā)送的命令字節(jié)

6、為101000000D0位為0表示隨后命令為寫入。3)發(fā)送完命令字節(jié)后,SCL發(fā)送第九個(gè)時(shí)鐘,等待受控器件(24C02)接收完畢并在數(shù)據(jù)線SDA上產(chǎn)生應(yīng)答位(ACK)作為響應(yīng)。主控器件單片機(jī)收到應(yīng)答信號(hào)后,就可以進(jìn)行數(shù)據(jù)傳送了。4)如果是寫操作,首先發(fā)送被寫入器件的內(nèi)存首地址,等待應(yīng)答信號(hào)(ACK)后,逐個(gè)發(fā)送各數(shù)據(jù)。如果是讀操作,首先發(fā)送被讀/寫器件的內(nèi)存首地址,等待應(yīng)答信號(hào)(ACK)后,在SDA數(shù)據(jù)線上按時(shí)鐘節(jié)拍逐位移入數(shù)據(jù)。AT24C02內(nèi)存地址范圍為00HFFH。5)讀/寫數(shù)據(jù)完畢后,發(fā)送停止信號(hào),終止操作。時(shí)序如圖7-4(b)所示?!咀鲆蛔觥繉?shí)訓(xùn)AT24C02讀/寫操作1.實(shí)訓(xùn)目的熟

7、悉E2PR0M編程原理及步驟,進(jìn)一步明確其時(shí)序要求。2.實(shí)訓(xùn)內(nèi)容在AT24C02內(nèi)存地址80H寫入數(shù)據(jù)后讀出,并在LED上顯示。3.實(shí)訓(xùn)步驟1)畫出AT24C02與單片機(jī)89C51接口電路,如圖7-5所示。2)畫出程序流程圖。寫操作流程圖如圖7-6所示,要求自行完成讀操作流程圖、數(shù)碼管顯示流程圖。3)程序編寫、編譯、芯片燒錄。參考程序如下。圖7-5AT24C02接口電路圖7-6AT24C02寫操作流程圖;*;項(xiàng)目七:24C02讀寫操作;MCU:89C51,系統(tǒng)時(shí)鐘12MHZ;功能:寫入數(shù)據(jù)并讀出,同時(shí)顯示在LED上;已在實(shí)驗(yàn)板上調(diào)試通過;*LEDEQUP0LED1EQUP2.7SDAEQUP2

8、.1;數(shù)據(jù)線SCLEQUP2.0;時(shí)鐘線WRNUMEQU30H;讀出數(shù)據(jù)存儲(chǔ)WRITEDATAEQU3DH;E2PR0M寫入數(shù)據(jù)緩存0RG0000HLJMPSTART0RG0003HRETI0RG000BHRETI0RG0013HRETI0RG00lBHRETI0RG0023HRETSTART:M0V P0,#0FFHM0VP1,#0FFHM0V R0"#7FHCLRAM:M0VR0,#00DJNZR0,ÇLRAM;內(nèi)容RAM單元清零M0V SP,#70H;堆戰(zhàn)設(shè)置在60H單元MAIN:LCALLWRITE;將數(shù)據(jù)寫入LCALLREAD;數(shù)據(jù)讀出,在WR_NUM單元LCAL

9、LLEDPLAY;將WR一肌用單元數(shù)顯示在LEDLJMPMAIN;*;數(shù)碼管顯示子程序;*LED_PLAY:M0V A,WR_NUM;顯示十位M0VDPTR,#TABM0VCA,A+DPTRM0V P0,ACLRLED1RETTAB:DB0C0H,0F9H,0A/H,0B0H,99H,92H,82H,0F8H,80H,90HF共陽數(shù)碼管段碼;*;E2PR0M讀子程序(AT24C02);*READ:LCALLSTART_EEPR0MM0V A,#0A0HLCALLWBYTEM0V A,#80H;寫入讀數(shù)據(jù)地址LCALLWBYTEN0PN0PLCALLSTARTEEPR0MM0V A,#0A1H;

10、寫入芯片地址LCALLWBYTELCALLRBYTEM0VWR_NUM,A;讀出數(shù)據(jù)LCALLST0PRET;*;WRITE:E2PR0M讀子程序(AT24C02);*WRITE:LCALLSTART_E2PR0MM0V A,#0A0HLCALLWBYTEM0V A,#80H;寫入數(shù)據(jù)地址LCALLWBYTEM0V A,#0;寫入數(shù)據(jù)(0),存24C02地址80HLCALLWBYTE;寫入LCALLST0P;停RET;*;字節(jié)寫子程序;入口;A;占用:R3,write_data;*WBYTE:N0PN0PM0VWRITE_DATA,AWBY1:M0V A,WRITE_DATAM0V R3,#8

11、WBY0:CLRSCLRLCAM0VSDA,CSETBSCLDJNZR3,WBY0;8次CLRSCLN0PN0PSETBSCLN0PN0PN0PN0PJBSDA,WBYl;等ACK響應(yīng),沒有響應(yīng)則重寫CLRSCLN0PN0PRET;*;字節(jié)讀子程序;出口:A;占用:R3;*RBYTE:N0P;字節(jié)讀N0PM0V R3,#8RBY0:CLRSCLN0PN0PSETBSCLN0PN0PMQVc,SDARLCADJNZR3,RBY0CLRSCLN0PN0PSETBSDAN0PN0PSETBSCLN0PN0PRET;*START_EEPR0M:CLRSCL;啟動(dòng)子程序N0PN0PSETBSDAN0PN

12、0PSETBSCLN0PN0PCLRSDAN0PN0PCLRSCLRET;*ST0P:CLRSCL;停止子程序N0PN0PCLRSDAN0PN0PSETBSCLN0PN0PSETBSDAN0PN0PCLRSCLRETEND4)實(shí)驗(yàn)板上運(yùn)行程序井觀察數(shù)碼管顯示結(jié)果,依次修改寫入數(shù)據(jù)(限于09)并驗(yàn)證程序的正確性。5)完成實(shí)訓(xùn)報(bào)告。【議一議】1)I2C總線時(shí)序要求非常嚴(yán)格,編寫程序時(shí)應(yīng)保證其時(shí)序的正確,此為程序成敗的關(guān)鍵,對(duì)照寫入數(shù)據(jù)的子程序畫出其時(shí)序圖,將有助于對(duì)I2C總線的理解。2)實(shí)訓(xùn)程序中多次出現(xiàn)“N0P"指令,思考其作用是什么?3)在AT24C02地址80H開始連續(xù)寫入1、2、

13、3、4四個(gè)數(shù)據(jù),應(yīng)如何編寫程序?在實(shí)訓(xùn)參考程序上改動(dòng)完成?!驹u(píng)一評(píng)】表7-1AT24C02讀/寫操作實(shí)訓(xùn)評(píng)測(cè)任務(wù)二數(shù)字鐘的設(shè)計(jì)【任務(wù)目標(biāo)】學(xué)會(huì)對(duì)單片機(jī)項(xiàng)目的任務(wù)分析法。懂得初步規(guī)劃單片機(jī)內(nèi)部資源。完成數(shù)字鐘的程序調(diào)試。【讀一讀】知識(shí)1數(shù)字鐘任務(wù)分析1.任務(wù)分析數(shù)字鐘以其顯示直觀、走時(shí)準(zhǔn)確而受到了人們的歡迎。在工業(yè)控制方面,數(shù)字鐘作為一種嵌入式電子部件被廣泛應(yīng)用于智能儀表、自動(dòng)化控制設(shè)備、汽車及與時(shí)間有關(guān)的各類控制設(shè)備中。在基本數(shù)字鐘顯示時(shí)、分、秒的基礎(chǔ)上,為滿足各種需要,可增加其他相關(guān)功能,如顯示星期、日期(農(nóng)歷、陽歷)、環(huán)境溫度、定時(shí)定鬧、多路定時(shí)控制(打鈴儀)。圖7-7所示為部分?jǐn)?shù)字鐘。圖

14、7-7部分?jǐn)?shù)字鐘外形作為一種計(jì)時(shí)工具,數(shù)學(xué)鐘的核心離不開計(jì)時(shí)器,利用單片機(jī)設(shè)計(jì)制作數(shù)字鐘具有電路簡(jiǎn)潔、計(jì)時(shí)準(zhǔn)確、控制靈活等優(yōu)點(diǎn),任務(wù)設(shè)計(jì)流程采用自頂向下設(shè)計(jì)法,如圖7-8所示。本項(xiàng)目數(shù)字鐘功能確定:采用四位數(shù)碼管顯示時(shí)、分,一路定鬧輸出,采用三個(gè)按鍵完成時(shí)鐘較準(zhǔn)、定時(shí)調(diào)節(jié),定時(shí)時(shí)間可永久記憶。圖7-8數(shù)字鐘設(shè)計(jì)自頂向下分析法2.數(shù)字鐘硬件電路設(shè)計(jì)根據(jù)本項(xiàng)目的功能分析,確定電路結(jié)構(gòu)如圖7-9所示,采用89C51最小系統(tǒng)為核心,采用4只共陽LED用作顯示,P0口輸出段碼數(shù)據(jù),P2./P2.7口作為位掃描輸出;P1.6口接按鍵7為定鬧設(shè)定,P1.5口接接鍵11調(diào)分鍵,P1.4口接按鍵15為調(diào)小時(shí)鍵。

15、P2./P2.7I/0口外接。三極管9012的作用是增強(qiáng)89C51P2口驅(qū)動(dòng)電流,單片機(jī)系統(tǒng)晶振選12MHz,有利于提高秒計(jì)時(shí)的準(zhǔn)確性。圖7-9數(shù)字鐘電路為簡(jiǎn)化電路設(shè)計(jì),時(shí)鐘的秒點(diǎn)以數(shù)碼管的小數(shù)點(diǎn)顯示,故數(shù)碼管LED3應(yīng)倒裝,因此LED3段碼與其他三種數(shù)碼管不同,在編寫程序時(shí)必須注意。知識(shí)2時(shí)鐘系統(tǒng)程序規(guī)劃1.主程序主程序完成89C51初始化、調(diào)用顯示子程序、按鍵判斷、定鬧時(shí)間判斷等功能,流程圖如圖7-10所示。對(duì)主程序中幾個(gè)標(biāo)志說明如下。FLAGT:時(shí)鐘調(diào)整標(biāo)志,供加1子程序用,F(xiàn)LAG_T為1時(shí),調(diào)整小時(shí)位,F(xiàn)LAGT為0時(shí)調(diào)整分位。圖7-10主程序流程圖阻YDATA:鬧鐘設(shè)定鍵鍵值,每按

16、一次設(shè)定鍵(KEYM0V),鍵值加1,鍵值范圍03。各鍵值意義如表7-2所示。定鬧時(shí)間最小單位是分,只需每分鐘查詢一次鬧鈴時(shí)間是否己到即可。設(shè)定一個(gè)1分鐘時(shí)間標(biāo)志FLAGN,1分鐘時(shí)間到,由定時(shí)器T0子程序置1(FLAGN=l),主程序根據(jù)FLAGN標(biāo)志決定是否查詢定鬧時(shí)間。表7-2鍵值標(biāo)志按住時(shí)間調(diào)整鍵(阻YH0UR,阻YMINU)不放,時(shí)間連續(xù)加1,故程序中不必判斷按鍵是否松開。2.加l子程序加1子程序完成小時(shí)、分位的加l調(diào)整,這里有兩種情況,一是對(duì)時(shí)鐘的調(diào)整(加1)。二是對(duì)定鬧時(shí)間的調(diào)整:調(diào)整時(shí)還須分清是調(diào)小時(shí)位還是分位,以上各種情況根據(jù)不同的標(biāo)志完成,表7-3給出了各標(biāo)志代表的意義,圖

17、7-11為加l子程序流程圖。表7-3加1子程序標(biāo)志操作圖7-11加子程序流程圖值得提的是,當(dāng)分位或小時(shí)位連續(xù)加l時(shí),單片機(jī)運(yùn)行速度很快,如“加1"速度不加以限責(zé)L二二二會(huì)給調(diào)整帶來困難。表7-3中FLAGSPEED標(biāo)志即用來限制調(diào)整速度,本項(xiàng)目設(shè)計(jì)為每0.5s加1,F(xiàn)LAGSPEED標(biāo)志產(chǎn)生于定時(shí)中斷子程序。3.T0定時(shí)中斷子程序定時(shí)器T0用于時(shí)間計(jì)時(shí),定時(shí)溢出周期設(shè)為50ms,累計(jì)中斷20次為Is,按時(shí)、分、秒進(jìn)制規(guī)律分別給時(shí)、分、秒單元賦值。時(shí)鐘采用24小時(shí)制,即時(shí)間到23時(shí)59分59秒后全部歸零。定時(shí)器T0同時(shí)還需完成各種與定時(shí)有關(guān)的標(biāo)志,供其他程序使用。由T0產(chǎn)生的標(biāo)志列于表

18、7-4。表7-4T0產(chǎn)生的標(biāo)志4.顯示子程序數(shù)碼智顯示采用動(dòng)態(tài)掃描顯示法。根據(jù)時(shí)鐘所處的狀態(tài),顯示內(nèi)容分為兩種:是顯示正常走時(shí)的時(shí)鐘;二是顯示定鬧時(shí)間。進(jìn)入定鬧時(shí)間調(diào)整狀態(tài)時(shí),顯示定鬧時(shí)間,并且小時(shí)位或分位數(shù)字閃爍,表明該位己進(jìn)入調(diào)整狀態(tài),可以進(jìn)行調(diào)整。不同的顯示狀態(tài)由各自標(biāo)志來判斷。顯示子程序所用的標(biāo)志如表7-5所示。表7-5顯示子程序中的標(biāo)志【做一做】實(shí)訓(xùn)1定時(shí)、顯示子程序的編寫1.實(shí)訓(xùn)目的進(jìn)一步熟悉動(dòng)態(tài)掃描顯示法、定時(shí)中斷的設(shè)置應(yīng)用。2.實(shí)訓(xùn)內(nèi)容完成時(shí)鐘顯示、定時(shí)子程序流程圖、程序編寫。3.實(shí)訓(xùn)步驟(1)畫出顯示子程序流程圖。由圖7-9時(shí)鐘電路可知,數(shù)碼管段碼由單片機(jī)P0口驅(qū)動(dòng),位選分別

19、由P2.7、P2.6、P2.5、P2./完成。在數(shù)字鐘系統(tǒng)中,顯示內(nèi)容有兩個(gè)方面,是顯示正常的時(shí)鐘;二是在按鍵的控制下可以顯示定鬧時(shí)間,在顯示子程序里依靠鍵值KEY_DATA識(shí)別(參見表7-5),由此畫出顯示子流程圖如圖7-12所示。圖7-12顯示子、程序流程圖(2)定時(shí)中斷子程序定時(shí)器T0中斷子程序主要完成時(shí)間的累加,以24小時(shí)制的規(guī)律運(yùn)行,即每60s分加1.每1小時(shí)加1.每24小時(shí)后時(shí)間歸零。另外,由表7-3可知,須產(chǎn)生FLAG250ms、FLAG_speed、FLAGS、FLAGN這幾個(gè)與時(shí)間有關(guān)的標(biāo)志,供其子程序使用。根據(jù)任務(wù)分析完成定時(shí)子程序流程圖。(3)顯示、定時(shí)中斷參考子程序;*

20、;定時(shí)器T0中斷子程序;*TIMER0:M0VT日0,#3CH0RLTL0,#0B0H;重裝初值PUSHPSWPUSHACCDJNZDATAl,T_0M0VDATA1,#SCPLFLAG250MS;250m8時(shí)間到標(biāo)志T_0:DJNZDATA2,T_lM0VDATA2,#10SETBFLAG_SPEED;0.5s時(shí)間到標(biāo)志T_l:DJNZDATA0,TIMER0_ENDM0VDATA0,#10CPLFLAGS;每一分鐘給標(biāo)志INCSEC0NDM0V A,SEC0NDCJNE A,#120,TIMER0_ENDM0VSEC0ND,#0SETBFLAGNINCMlNUTEM0V A,MlNUTEC

21、JNE A,#60,TIMER0_ENDM0VMINUTE,#0INCH0URM0V A,H0URCJNE A,#24,TIMER0_ENDM0VH0UR,#0TIMER0END:P0PACCP0PPSWRETI;*;數(shù)碼管顯示子程序;*LEDPLAY:CLRLED_1CLRLED_2CLRLED_3CLRLED_4M0V A,KEY_DATACJNE A,#0,PLAY_SETM0V A,H0UR;顯示時(shí)鐘,BCD轉(zhuǎn)換M0VB,#10DIVABM0VLED_Q,AM0VLED_B,BM0V A',MlNUTEM0VB,#10DIVABM0VLED_S,AM0VLED_G,BLJMPP

22、LAY_10PLAY_SET:M0V A,H0UR_SET;顯示定鬧時(shí)間,BCD轉(zhuǎn)換M0VB,#10DIVABM0VLED_Q,AM0VLED_B,BM0V A,MlNUTE_SETM0VB,#10DIVABM0VLED_S,AM0VLED_G,BPLAY_10:M0V A,KEY_DATACJNE A,#1,PLAY_0JNBFLAG_250MS,PLAY_0M0V A,#0FFH;熄滅符AJMPPLAY1PLbY_0:M0V A,LED_Q;顯示小時(shí)十位M0VDPTR,#TABM0VCA,A+DPTRPLAY_1:M0V P0,ASETBLED1LCALLDELIMSCLRLED1M0V

23、A,KEY_DATACJNE A-,#1,PLAY_2JNBFLAG_250MS,PLAY_2M0V A,#0FFH;熄滅符AJMPPLAY3PLAY_2:M0V A,LED_B;顯示小時(shí)十位M0VDPTR,#TABM0VCA,A+DPTRJBFLAG_S,PLAY_3CLRACC.7;點(diǎn)亮秒點(diǎn)PLAY_3:M0V P0,ASETBLED_2LCALLDEL_1MSCLRLED_2PLAY_4:M0V A,KEY_DATACJNE A,#2,PLAY_5JNBFLAG_250MS,PLAY_5M0V A,#0FFH;熄滅符AJMPPLAY6PLAY_5:M0V A,LED_S;顯示分十位M0V

24、DPTR,#TABl;實(shí)驗(yàn)板上第二位數(shù)碼管倒裝,其段碼不同M0VCA,A+DPTRJBFLAG_S,PLAY_6CLRACC.6;點(diǎn)亮秒點(diǎn)PLAY_6:M0V P0,ASETBLED3LCALLDEL_lMSCLRLED3M0V A,KEY_DATACJNE A,#2,PLAY_7JNBFLAG_250MS,PLAY_7M0V A,#0FFH;熄滅符AJMPPLAY_8PLAY_7:M0V A,LED_G;顯示分個(gè)位M0VDPTR,#TABM0VCA,A+DPTRPLAY_8:M0V P0,ASETBLED4LCALLDELlMSCLRLED4LED_PLAY_END:RETTAB:DB0C0

25、H,0F歸,0A4H,0B0H,99H,92H,82H,0F8日,80H,90日;共陽數(shù)碼管段碼TABl:DB0C0H,0F9H,64H,70H,59H,52H,42H,0F8H,40H,50H;倒裝數(shù)碼管段碼;*;1ms延時(shí)子程序;*DEL_lMS:M0V R0,#2DEL_l:M0V Rl,#250DEL_0:DJNZRl,DEL_0DJNZR0,DEL_lRET(4)顯示子程序調(diào)試在編譯軟件中輸入顯示子程序,軟件匯編通過后燒錄在實(shí)驗(yàn)板上測(cè)試。為使顯示子程序正確顯示效果,需在顯示子程序前定義相關(guān)寄存器、并給H0UR(小時(shí))、H0URSET(定鬧小時(shí))、MINUTE(分)、MINUTESET

26、(定鬧分)賦值,觀察實(shí)驗(yàn)板是否正確顯示:在阻Y一DATA為0時(shí),應(yīng)顯示時(shí)鐘,為1時(shí)應(yīng)顯示定鬧時(shí)鐘。(5)定時(shí)器T0中斷子程序調(diào)試調(diào)試前需做相關(guān)設(shè)置(頭文件):1)打開定時(shí)器T0中斷、總中斷。2)設(shè)置T0定時(shí)器初值(按50ms計(jì)算)。3)T0中斷子程序相關(guān)寄存器定義。T0定時(shí)中斷子程序采用軟件仿真的形式進(jìn)行調(diào)試,利用Medwin編譯軟件的單步、斷點(diǎn)等功能,觀察是否能產(chǎn)生相關(guān)標(biāo)志,時(shí)鐘寄存器單元是否按設(shè)定的要求累加。(6)顯示子程序、定時(shí)器中斷子程序聯(lián)調(diào)顯示、定時(shí)子程序聯(lián)合調(diào)試可在實(shí)驗(yàn)板上直觀顯示,產(chǎn)生時(shí)鐘的效果。調(diào)試前同樣須設(shè)置好頭文件(主程序),如單片機(jī)數(shù)據(jù)存儲(chǔ)器清零初始化、定時(shí)器設(shè)置、中斷設(shè)

27、置、調(diào)用顯示子程序。實(shí)訓(xùn)完成后,寫出實(shí)訓(xùn)報(bào)告,并填寫評(píng)測(cè)表?!咀h一議】1)本實(shí)訓(xùn)提供了-種復(fù)雜程序的調(diào)試方法:先按功能模塊(子程序)調(diào)試、最后總調(diào)。這種方法最適合于初次編寫程序的人員,優(yōu)點(diǎn)是容易在較小的范圍內(nèi)發(fā)現(xiàn)錯(cuò)誤并迅速排錯(cuò):缺點(diǎn)是比較費(fèi)時(shí):故編程具備相當(dāng)熟練的基礎(chǔ)后可跳過分功能調(diào)試,直接進(jìn)行總調(diào)。2)調(diào)試某一子程序時(shí),為能使程序正確運(yùn)行、能直觀觀察到數(shù)據(jù)以達(dá)到調(diào)試的目的,需在調(diào)試子程序前做些準(zhǔn)備工作,如給某些寄存器人為的賦予特定值、加上必要的調(diào)用指令等。務(wù)必讓子程序全部功能顯示出來,讓可能的錯(cuò)誤全部暴露。3)本實(shí)訓(xùn)給出了參考子程序,但并不是唯一的編寫方法,“依葫蘆畫瓢”后可大膽編寫具有自己

28、思路的程序,才能逐步形成自己的編程風(fēng)格。【評(píng)一評(píng)】填定表7-6中的內(nèi)容。表7-6定時(shí)、顯示子程序?qū)嵱?xùn)評(píng)測(cè)表【做一做】實(shí)訓(xùn)2數(shù)字鐘的調(diào)試1.實(shí)訓(xùn)目的完成整個(gè)數(shù)字鐘的調(diào)試,學(xué)會(huì)程序調(diào)試、排錯(cuò)方法。2.實(shí)訓(xùn)內(nèi)容1)完成數(shù)字鐘主程序。2)完成E2PR0M讀/寫子程序,保存、讀出走鬧時(shí)間。3)其他子程序(顯示、T0中斷子程序、加1子程序等組合聯(lián)調(diào)。3.實(shí)訓(xùn)步驟1)細(xì)化圖7-10所示流程圖,并寫出程序。2)編寫定鬧時(shí)間讀/寫子程序,將定鬧時(shí)間小時(shí)位、分位寫入24C02保存,每次開機(jī)時(shí)從24C02讀出定鬧時(shí)間。3)完成全部子程序,整機(jī)調(diào)試。4)脫機(jī)運(yùn)行。參考主程序如下。;*;項(xiàng)目七:可走時(shí)定鬧的數(shù)字鐘;MC

29、U:89C51,系統(tǒng)時(shí)鐘12MHz;功能:24小時(shí)制時(shí)鐘,帶走鬧功能,定鬧時(shí)間可永久保存;己在實(shí)驗(yàn)板上調(diào)試通過;*為89C51I/O口定義*KEY_日0UREQUP1.4;調(diào)時(shí)KEY_M1NUEQUP1.5;調(diào)分KEY_M0VEQUP1.6;設(shè)定鍵,進(jìn)入定鬧時(shí)間調(diào)整LEDEQUP0LED1EQUP2.7LED2EQUP2.6LED3EQUP2.5LED4EQUP2.4S0UNTEQUP2.3;鬧鐘報(bào)警SDAEQUP2.1;E2PR0M數(shù)據(jù)線SCLEQUP2.0;E2PR0M時(shí)鐘線;*以下為用戶RAM定義*H0UREQU30H;時(shí)鐘小時(shí)單元MlNUTEEQU31H;時(shí)鐘分單元SEC0NDEQU3

30、2H;時(shí)鐘秒單元H0URSETEQU33H;定鬧時(shí)間小時(shí)單元M1NUTE_SETEQU34H;定鬧時(shí)間分單元LED_QEQU35H;BCD千位LEDBEQU36日;BCD百位LEDGEQU37H;BCD個(gè)位LEDSEQU38H;BCD十位DATA0EQU39HDATA1EQU3AHDATA2EQU3BHKEY_DATAEQU3CH;設(shè)定鍵鍵值=1調(diào)定鬧小時(shí),=2調(diào)定鬧分,=3保存定鬧時(shí)間WRITE_DATAEQU3DH;E2PR0M寫入數(shù)據(jù)緩存FLAG_SEQU20H.0;秒閃標(biāo)志FLAG_TEQU20H.1;=1調(diào)時(shí)鐘小時(shí)位,=0調(diào)時(shí)鐘分位FLAG_SPEEDEQU20H.2;調(diào)整速度FLA

31、G_250MSEQU20H.3FLAGNEQU20H.4;每分鐘查詢一次定鬧時(shí)間標(biāo)志;主程序開始:0RG0000HLJMPSTART0RG0003HRET10RG000BHLJMPT1MER00RG0013HN0PRET10RG001BHN0PRETI0RG0023HN0PRETISTART:M0V P0,#0FFHMQVP1,#0FFHCLRS0UNTM0V R0,#7FHCLRAM:M0VR0,#00DJNZR0,CLRAM;內(nèi)容RAM單元清零M0VDATA0,#10M0VDATAl,#5M0VDATA2,#10M0V SP,#60H;堆棧設(shè)置在60H單元M0VH0UR,#12;上電默認(rèn)時(shí)

32、間12:_00M0VTM0D,#01H;設(shè)置T0方式1SETBEASETBET0M0VTH0,#3CHM0VTL0,#0B0H;50ms初值SETBTR0LCALLREAD;讀出定鬧時(shí)間MAIN:LCALLLEDPLAYJBKEY_H0UR,MAIN_0LCALLLEDPLAYLCALLLEDPLAYJBKEY_H0UR,MAIN_0SETBFLAGTLCALLADD1;小時(shí)加1MAIN_0:JBKEY_MINU,MAIN_1LCALLLEDPLAY.LCALLLEDFLAYJBKEY_MINU,MAIN_1CLR.FLAGTLCALLADD1;分加1MAIN_1:JBKEY_M0V,MAIN

33、_3;調(diào)定鬧時(shí)間LCALLLEDPLAYLCALLLEDPLAYJBKEY_M0V,MAIN_3INCKEYDATAMAIN2:LCALLLEDPLAYJNBKEY_M0V,MAIN_2;按鍵松開?M0V A,KEY_DATACJNE A,#3,MAIN_3LCALLWRITE;保存定鬧時(shí)間M0VKEY_DATA,#0MAIN_3:JNBFLAG_N,MAIN;每分鐘查詢一次鬧鐘CLRFLAGNM0V A,H0UR_SETCJNE A,H0UR,MAIN_4M0V A,MlNUTE_SETCJNE A,MINUTE,MAIN_4SETBS0UNT;鬧鐘響一分鐘LJMPMAINMAIN4:CLR

34、S0UNTLJMPMAIN24C02讀/寫參考子程序?yàn)橄?。?;EEPR0M讀子程序(AT24C02);*READ:LCALLSTARTEEPR0MM0V A,#0A0HLCALLWBYTEM0V A,#80H;寫入數(shù)據(jù)地址LCALLWBYTEN0PN0PLCALLSTART_EEPR0MM0V A,#0A1H;寫入芯片地址,定鬧時(shí)間存在24C02內(nèi)存80H、81HLCALLWBYTELCALLRBYTEM0VH0UR_:SET,A;讀出定鬧小時(shí)位LCALLSTARTEEPR0MM0V A,#0A0HLCALLWBYTEM0V A,#81H;寫入數(shù)據(jù)地址LCALLWBYTEN0PN0PLCAL

35、LSTART_EEPR0MM0V A,#0A1H;寫入芯片地址LCALLWBYTELCALLRBYTEM0VMINUTE_SET,A;讀出定鬧分位LCALLST0PRET;*;WriteE2PR0M子程序CAT24C02);*WRITE:LCALLSTART_EFPR0MM0V A,#0A0HLCALLWBYTEM0V A,#80H;寫入數(shù)據(jù)地址LCAbLWBYTEM0V A,H0UR_SET;寫定鬧小時(shí)位,存24C02地址80HLCALLWBYTE;寫入數(shù)據(jù)地址M0V A,MINUTE_SET;寫定鬧分位,存24C02地址81HLCALLWBYTELCALLST0P;停RET;*;字節(jié)寫子程

36、序;入口:A;占用:R3,WRITE_DATA;*WBYTE:M0VWRITE_DATA,AWBY1:M0V A,WRITE_DATAM0V R3,#8WBY0:CLRSCLRLCAM0VSDA,C;寫位SETBSCLDJNZ.R3,WBY0;8次CLRSCLN0PN0PSETBSCLN0PN0PN0PN0PJBSDA,WBYl;等ACK響應(yīng)CLRSCLN0PN0PRET;*;字節(jié)讀子程序;出口:A;占用:R3;*RBYTE:N0P;字節(jié)讀N0PM0V R3,#8RBY0:CLRSCLN0PN0PSETBSCLN0PN0PM0VC,SDARLCADJNZR3,RBY0CLRSCLN0PN0PS

37、ETBSDAN0PN0PSETBSCLN0PN0PRET;*;啟動(dòng)子程序;*STARTEEPR0M:CLRSCL;啟動(dòng)子程序N0PN0PSETBSDAN0PN0PSETBSCLN0PN0PCLRSDAN0PN0PCLRSCLRET;*;停止子程序;*ST0P:CLRSCLN0PN0PCLRSDAN0PN0PSETBSCLN0PN0PSETBSDAN0PN0PCLRSCLRET【議一議】1)本實(shí)訓(xùn)項(xiàng)目數(shù)字鐘的完成具有實(shí)用意義,可直接投入生活應(yīng)用。2)程序中所用標(biāo)志較多,寫程序時(shí)若列出表格,注明標(biāo)志功能,可減少差錯(cuò):凡涉及標(biāo)志,一定有“生”有“死”,即標(biāo)志產(chǎn)生于何時(shí),又在何時(shí)消除,這是一個(gè)很嚴(yán)密的

38、邏輯,不容一點(diǎn)差錯(cuò)。3)實(shí)訓(xùn)數(shù)字鐘程序可保存定鬧時(shí)間,即掉電后重新開機(jī)定鬧時(shí)間不變,但時(shí)鐘回到預(yù)設(shè)12:00,需重調(diào)時(shí)鐘:解決的辦法是:給單片機(jī)加后備電池,掉電后,數(shù)碼管不亮,但單片機(jī)正常運(yùn)行,時(shí)間雖沒有顯示但仍在走,重新加電后又正常顯示時(shí)間。4)由于晶振等的誤差,導(dǎo)致時(shí)鐘走時(shí)與標(biāo)準(zhǔn)時(shí)鐘(北京時(shí)間)有偏差,實(shí)訓(xùn)中數(shù)字鐘大約每24小時(shí)會(huì)偏差ls(誤差0.001%),可在軟件中進(jìn)行調(diào)整或選擇精度高的晶振:高檔的時(shí)鐘一般會(huì)選用專用的時(shí)鐘芯片如DS1302。5)該數(shù)字鐘稍加改進(jìn)可成為多時(shí)間走鬧(控制)的時(shí)鐘控制器,如打鈴儀、多路定時(shí)控制器及其他與時(shí)間有關(guān)的控制裝置。6)該數(shù)字鐘在調(diào)整時(shí)鐘時(shí)只能遞增循環(huán)

39、調(diào)整,沒有設(shè)計(jì)遞減按鍵,在使用時(shí)會(huì)感到不便,可考慮增加一個(gè)遞減按鍵(或用現(xiàn)有按鍵復(fù)用),在實(shí)訓(xùn)中思考并實(shí)踐。【評(píng)一評(píng)】請(qǐng)?zhí)顚懕?-7中內(nèi)容。表7-7數(shù)字鐘實(shí)訓(xùn)評(píng)測(cè)表任務(wù)三單片機(jī)可靠性設(shè)計(jì)【任務(wù)目標(biāo)】知道單片機(jī)可靠性設(shè)計(jì)的重要性。能說出影響單片機(jī)系統(tǒng)運(yùn)行可靠性的基本因素。懂得提高可靠性的基本方法,能在軟件/硬件設(shè)計(jì)時(shí)初步應(yīng)用。【讀一讀】幾乎所有的單片機(jī)工程師都有這樣的經(jīng)歷,在實(shí)驗(yàn)室千辛萬苦安裝和調(diào)試好的單片機(jī)系統(tǒng)投入工業(yè)現(xiàn)場(chǎng)進(jìn)行實(shí)際運(yùn)行時(shí),卻發(fā)現(xiàn)不能正常工作,有的一開機(jī)就失靈,有的時(shí)好時(shí)壞,那么,究竟是什么原因造成這種現(xiàn)象呢?原因只有二個(gè),那就是干擾。眾所周知,工業(yè)環(huán)境有強(qiáng)大的電磁干擾,在單片機(jī)

40、沒有采取抗干擾措施或措施不得力時(shí),單片機(jī)系統(tǒng)便不能適應(yīng)工業(yè)環(huán)境。故在系統(tǒng)開發(fā)設(shè)計(jì)時(shí),抗干擾設(shè)計(jì)成為重中之重,有時(shí)為抗干擾所做的工作甚至比前期開發(fā)的工作還要多,由此可見抗干擾技術(shù)的重要性??垢蓴_技術(shù)從大的方面來分,可分為硬件措施和軟件措施兩大類。知識(shí)1硬件電路的可靠性設(shè)計(jì)硬件電路設(shè)計(jì)得當(dāng),可將絕大多數(shù)干擾拒之門外,這是單片機(jī)系統(tǒng)可靠性的第一道防線:硬件抗干擾的優(yōu)點(diǎn)是效率高,缺點(diǎn)是投入成本增加,同時(shí)使設(shè)備體積增大。最主要的硬件措施大致有元件可靠性選擇、電磁屏蔽技術(shù)、濾波技術(shù)、供電電源的可靠性設(shè)計(jì)、輸入/輸出的隔離措施、合理的PCB板設(shè)計(jì)等。1.元件的可靠性選擇元件的正確選用是單片機(jī)電路可靠性設(shè)計(jì)中

41、的重要環(huán)節(jié),選用的元器件是否合理與優(yōu)質(zhì)將直接影響到整個(gè)系統(tǒng)的性能與可靠性水平、系統(tǒng)成本及日后的維護(hù)。選用時(shí)應(yīng)遵循以下基本準(zhǔn)則。1)滿足性能要求。元件的各項(xiàng)性能參數(shù)要滿足電路性能要求,如電壓等級(jí)、電流頻率特性、放大參數(shù)與功耗等。2)滿足可靠性要求??煽啃砸蟀目垢蓴_性能及使用壽命兩個(gè)方面。元件的壽命(失效率)隨著工作電壓、環(huán)境溫度等提高而成倍地縮短t失效率增加),在半導(dǎo)體技術(shù)水平尚不很發(fā)達(dá)的情況下,降額使用已成為提高系統(tǒng)可靠性的常用方法。降額設(shè)計(jì)是指使元件在低于其額定應(yīng)力情況下工作。影響元件可靠性運(yùn)行的應(yīng)力有電應(yīng)力(電壓、電流、功率、頻率)、溫度、機(jī)械應(yīng)力(振動(dòng)、沖擊)等。當(dāng)工作應(yīng)力高于

42、額定應(yīng)力時(shí)失效率就增加,例如金屬膜電阻,在700C溫度下,若功率降低50%,其失效率就降低兩個(gè)數(shù)量級(jí),云母電容器的環(huán)境溫度降低50%,電壓降低30%時(shí)其失效率降低三個(gè)數(shù)量級(jí),可見元件降額、使用是提高其可靠性的有效方法。元件常用降額系數(shù)如表7-8所示。表7-8各種元件降額系數(shù)表7-8中,電阻指功率降額,電容為電壓降額,半導(dǎo)體器件(集成電路)為功率、電流電壓降額,繼電器開關(guān)為電流降額。3)盡量減少元件品種、型號(hào),保證安裝、維護(hù)的方便。4)全面考慮系統(tǒng)應(yīng)用的工作環(huán)境溫度、濕度、振動(dòng)、沖擊及電參數(shù)條件。5)保證可靠性的條件下,盡量選用廉價(jià)的元件,以降低成本。2.電路設(shè)計(jì)常用的抗干擾措施1)光電隔離。在

43、輸入/輸出通道上采用光電藕合器進(jìn)行信號(hào)傳遞,可有效地將傳感器、開關(guān),功率執(zhí)行器件(如繼電器、可控硅)從電氣上隔離開來,很大一部分干擾將被阻擋。2)硬件濾波電路。在一些低頻信號(hào)傳遞回路上常用串接RC低通濾波器,可大大削弱各類高頻干擾信號(hào),如各類“毛刺”干擾。3)過壓保護(hù)電路:在單片機(jī)輸入/輸出回路上采用過壓保護(hù)元件,防止輸入過高電壓損壞單片機(jī)系統(tǒng),如用限流電阻、穩(wěn)壓管、瞬變二極管(TVS)等。4)穩(wěn)定可靠的電源技術(shù):?jiǎn)纹瑱C(jī)系統(tǒng)的供電電源是干擾進(jìn)入的重要途徑,要求穩(wěn)壓電源穩(wěn)定、內(nèi)阻小、紋波系數(shù)小、抗干擾能力強(qiáng)。條件允許時(shí),可在電路板各個(gè)位置上多接一些濾波電容,電路中每一個(gè)集成芯片的供電端均加應(yīng)接一

44、個(gè)瓷片電容(去相電容)。5)電路PCB板設(shè)計(jì)應(yīng)合理,符合電氣性能要求,如盡可能降低電源走線、地線的阻抗,輸入與輸出信號(hào)應(yīng)遠(yuǎn)離,避免平行走線,電源與地線的環(huán)路面積應(yīng)盡量小。知識(shí)2軟件抗干擾技術(shù)設(shè)計(jì)單片機(jī)系統(tǒng)尤其是測(cè)控系統(tǒng)時(shí),可靠性是最重要的指標(biāo)之二,要求其在工作環(huán)境惡劣、干擾嚴(yán)重時(shí)也能可靠運(yùn)行。系統(tǒng)的可靠性除采用硬件抗干擾方法外,還應(yīng)輔之以優(yōu)良的軟件抗干擾技術(shù)。軟件抗干擾技術(shù)主要包括抑制疊加在模擬輸入信號(hào)上的干擾噪聲的影響,如數(shù)字濾披技術(shù),以及由于干擾使程序運(yùn)行發(fā)生海亂、導(dǎo)致程序亂飛或陷入死循環(huán)時(shí)能將其納入正軌的措施,如軟件指令冗余、軟件陷阱、看門狗技術(shù)等。1.數(shù)字濾波技術(shù)模擬信號(hào)經(jīng)單片機(jī)AD轉(zhuǎn)

45、換后來集,如有干擾作用于模擬信號(hào)會(huì)使AD轉(zhuǎn)換偏離真實(shí)值,如果僅采集一次,無法確定該結(jié)果是否可靠,必須多次來樣,通過某種處理后才能得到二個(gè)可信度較高的結(jié)果。即從數(shù)據(jù)系列中提取可靠的、近似真實(shí)數(shù)據(jù)的軟件算法稱為數(shù)字濾波算法。常用的數(shù)字濾波技術(shù)有中值濾波、算術(shù)平均濾波、滑動(dòng)平均濾波、去極值平均濾波等。算術(shù)平均濾波算法適用于抑制隨機(jī)干擾,采集次數(shù)越多,平滑效果越好,但會(huì)影響系統(tǒng)的靈敏度,以下為算術(shù)平均濾波算法例程。設(shè)將8個(gè)己采集到的數(shù)據(jù)存放在30H37H單元,其程序段如下。M0V A,#0M0V R2,AM0V R3,AM0V R0,#30HL00P1:M0V AR0;取一個(gè)采樣值M0V A,R3M0

46、V R3,A;累加和低位放在R3CLRAADDCA,R2M0V R2,A;累加和高位放在R2INC R0CJNER0,#38H,L00Pl;累加完8個(gè)數(shù)據(jù)?SWAPA;以下累加和除以8RLAXCH A,R3SWAPARLAADDA,#80H;四舍五入ANLA,#lFHADDCA,R3;平均值在A中2.輸出口重復(fù)刷新為保證輸出數(shù)據(jù)的可靠性,最有效的方法是定時(shí)重復(fù)輸出同一數(shù)據(jù),這樣外部設(shè)備受到干擾時(shí)還沒來得及做出反應(yīng),個(gè)正確的輸出信息又來到,即可避免錯(cuò)誤動(dòng)作的發(fā)生。3.指令冗余技術(shù)當(dāng)CPU受到干擾后,往往將一些操作數(shù)當(dāng)作指令碼來執(zhí)行,引起程序混亂。這時(shí)首先要盡快將程序納入正軌(執(zhí)行真正的指令系列)

47、0MCS-51指令系統(tǒng)中所有的指令都不超過三個(gè)字節(jié),而且有很多單字節(jié)指令。當(dāng)程序彈飛到某一條單字節(jié)指令上時(shí),便自動(dòng)納入正軌:當(dāng)程序彈飛到某一雙字節(jié)指令上時(shí),有可能落到其操作數(shù)上,從而繼續(xù)出錯(cuò):當(dāng)程序彈飛到三字節(jié)指令上時(shí),因它有兩個(gè)操作數(shù),繼續(xù)出錯(cuò)的機(jī)會(huì)就更大。因此,應(yīng)多采用單字節(jié)指令,并在關(guān)鍵的地方人為地插入一些單字節(jié)指令(N0P),或?qū)⒂行巫止?jié)指令重復(fù)書寫,這便是指令冗余。指令冗余無疑會(huì)降低系統(tǒng)的效率,但在絕大多數(shù)情況下,CPU還不至于忙到不能多執(zhí)行幾條指令的程度,故這種方法還是可以采用的。4.軟件陷阱技術(shù)所謂軟件陷阱,就是條引導(dǎo)指令,強(qiáng)行將捕獲的程序引向一個(gè)指定的地址,在那里有一段專門對(duì)

48、程序出錯(cuò)進(jìn)行處理的程序。如果把這段程序的入口標(biāo)號(hào)稱為ERR,則軟件陷阱即為一條“LJMPERR"指令。為加強(qiáng)其捕捉效果,一般還在它前面加兩條N0P指令,因此,真正的軟件陷阱由三條指令構(gòu)成,即N0PN0PLJMPERR例如,某8051系統(tǒng)共使用了三個(gè)中斷:INT0、T0和Tl,其中斷子程序分別為INT0P、TIMER0、TIMERl,可按下列方式設(shè)置軟件陷阱:0RG0000HLJMPMAIN0RG0003HLJMPINT0_P;INT0中斷入口N0PN0P;元余指令LJMPERR;陷阱0RG000BHLJMPTIMER0;T0中斷入口N0PN0P;冗余指令LJMPERR;陷阱0RG00

49、13HN0P;未使用的中斷N0PLJMPERR0RG00lBHLJMPTIMER1;T1中斷入口N0PN0PLJMPERR;陷阱MAIN:;主程序5.看門狗系統(tǒng)所謂看門狗技術(shù)(WATCHD0G),即“程序運(yùn)行監(jiān)視系統(tǒng)”。程序運(yùn)行時(shí)定期對(duì)“看門狗”還原一次(喂狗一次),當(dāng)程序彈飛到一個(gè)死循環(huán)時(shí),CPU不能定期“喂狗”,“看門狗”將使程序強(qiáng)行復(fù)位,使之脫離死循環(huán)。這好比是主人養(yǎng)了一條狗,主人在正常干活的時(shí)候總是不忘每隔一段固定時(shí)間就給狗吃點(diǎn)東西,狗吃過東西后就安靜下來,不影響主人干活:如果主人打瞌睡,不干活了,到一定時(shí)間,狗餓了,發(fā)現(xiàn)主人還沒有給它吃東西,就會(huì)大叫起來,把主人喊醒。把“程序運(yùn)行監(jiān)視

50、系統(tǒng)”稱為“看門狗”也就是這個(gè)意思。從這個(gè)比喻中可以看出,看門狗有如下特性。1)本身能獨(dú)立工作,基本上不依賴CPU。2)CPU在一個(gè)固定的時(shí)間間隔中和該系統(tǒng)打一次交道(喂一次狗),以表明系統(tǒng)“目前工作正?!?。3)當(dāng)CPU掉入死循環(huán)后,能及時(shí)發(fā)覺并使系統(tǒng)復(fù)位。在51系列中,許多增強(qiáng)型單片機(jī)如89S51己將看門狗系統(tǒng)做入芯片,使用起來比較方便:而89C51則必須由程序員自行建立外部看門狗電路。此部分內(nèi)容可參考相關(guān)資料,在此不再細(xì)述。知識(shí)鏈接單片機(jī)發(fā)展歷程8位單片機(jī)從1976年公布至今己30余年。以I;tel的8位單片機(jī)為例來了解單片機(jī)的發(fā)展歷史,其發(fā)展階段大致分為單片機(jī)探索階段,單片機(jī)完善階段,微控制器形成階段和微控制器完善階段。1.第一代:?jiǎn)纹瑱C(jī)探索階段工控領(lǐng)域?qū)τ?jì)算機(jī)提出了嵌入式應(yīng)用要求,首先是實(shí)現(xiàn)單芯片形態(tài)的計(jì)算機(jī),以滿足構(gòu)成大量中小型智能化測(cè)控系統(tǒng)要求。因此,這階段的任務(wù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論