單片機(jī)的功能部件_第1頁
單片機(jī)的功能部件_第2頁
單片機(jī)的功能部件_第3頁
單片機(jī)的功能部件_第4頁
單片機(jī)的功能部件_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第六章單片機(jī)的功能部件教學(xué)內(nèi)容:1、定時(shí)計(jì)數(shù)器 2、單片機(jī)中斷系統(tǒng) 3、單片機(jī)串行通信本章重點(diǎn):1、單片機(jī)定時(shí)/計(jì)數(shù)器、中斷系統(tǒng)、串行通信的結(jié)構(gòu)與工作原理 2、單片機(jī)定時(shí)/計(jì)數(shù)器、中斷、串行通信初始化設(shè)置教學(xué)要求:1、要求掌握單片機(jī)定時(shí)/計(jì)數(shù)器、中斷、串行通信的結(jié)構(gòu)與工作原理 2、能熟練進(jìn)行單片機(jī)定時(shí)/計(jì)數(shù)器、中斷、串行通信初始化設(shè)置 3、能應(yīng)用單片機(jī)定時(shí)/計(jì)數(shù)器、中斷、串行通信解決實(shí)際問題教 案:第一節(jié) 定時(shí)計(jì)數(shù)器1、 結(jié)構(gòu)80C51單片機(jī)內(nèi)部設(shè)有兩個(gè)16位定時(shí)/計(jì)數(shù)器,簡稱為定時(shí)器0(T0)和定時(shí)器1(T1)。定時(shí)器計(jì)數(shù)器的結(jié)構(gòu)如圖1所示: 圖180C51單片機(jī)內(nèi)部定時(shí)計(jì)數(shù)器的結(jié)構(gòu)TMOD

2、-方式控制寄存器,用于設(shè)定定時(shí)計(jì)數(shù)器的工作方式TCON-定時(shí)器控制寄存器,用于啟動(dòng)定時(shí)計(jì)數(shù)器IE-中斷允許控制寄存器:定時(shí)計(jì)數(shù)器是微機(jī)的中斷源2、工作原理80C51系列單片機(jī)內(nèi)部定時(shí)計(jì)數(shù)器的工作原理可用圖2來說明。定時(shí)/計(jì)數(shù)功能選擇:當(dāng)CT0時(shí),為定時(shí)器功能,此時(shí),C與A相連(計(jì)數(shù)脈沖為機(jī)器周期);當(dāng)CT1時(shí),為計(jì)數(shù)功能,此時(shí),C與B相連(計(jì)數(shù)脈沖從P3.4 或P3.5口輸入)。定時(shí)/計(jì)數(shù)器設(shè)置:定時(shí)計(jì)數(shù)器設(shè)置由工作方式控制寄存器(TMOD)、定時(shí)控制寄存器(TCON)以及中斷允許寄存器(IE)共同完成。3、控制寄存器1)、方式控制寄存器TMOD方式控制寄存器(TMOD)是一個(gè)SFR寄存器,字

3、節(jié)地址為89H,CPU可以通過字節(jié)傳送指令來設(shè)定TMOD中各位的狀態(tài),但不能位尋址。GATE-門控制位當(dāng)GATE=0時(shí),定時(shí)計(jì)數(shù)器由定時(shí)控制寄存器中的TR0(或TR1)啟動(dòng)。當(dāng)GATE=1時(shí),定時(shí)計(jì)數(shù)器由外部中斷請求信號(hào)INT0(或INT1)與TRX共同啟動(dòng)。C/T-定時(shí)、計(jì)數(shù)功能選擇位當(dāng)C/T=0時(shí),定時(shí)計(jì)數(shù)器工作在定時(shí)工作方式當(dāng)C/T= 1時(shí),定時(shí)計(jì)數(shù)器工作在計(jì)數(shù)方式M1M2-方式控制位,如圖3所示。圖3 方式控制寄存器當(dāng)M1M000時(shí),定時(shí)計(jì)數(shù)器工作在方式0當(dāng)M1M001時(shí),定時(shí)計(jì)數(shù)器工作在方式1當(dāng)M1M010時(shí),定時(shí)計(jì)數(shù)器工作在方式2當(dāng)M1M011時(shí),定時(shí)計(jì)數(shù)器工作在方式3例:設(shè)定時(shí)計(jì)

4、數(shù)器T0用作定時(shí)器使用,且工作在方式3,與外部INT0無關(guān),定時(shí)計(jì)數(shù)器T1用作計(jì)數(shù)器且工作在方式2,與外部INT1有關(guān),試寫出控制寄存器TMOD的值。解:依題意知,TMOD11100011B=E3H MOVTMOD,0E3H -2)、定時(shí)器控制寄存器TCON定時(shí)器控制寄存器TCON的格式如圖4所示,定時(shí)控制寄存器TCON也是SFR,字節(jié)地址為88H,可位尋址,位地址為88H8FH,用于控制定時(shí)器的操作與中斷。TR0TR1用于啟停定時(shí)計(jì)數(shù)器:當(dāng)TRX1時(shí),啟動(dòng)定時(shí)計(jì)數(shù)器,用SETBTRX實(shí)現(xiàn);當(dāng)TRX0時(shí),停止定時(shí)計(jì)數(shù)器,用CLRTRX實(shí)現(xiàn);TF0TF1為定時(shí)計(jì)數(shù)器中斷標(biāo)志:當(dāng)TFX1,表示定時(shí)

5、計(jì)數(shù)有溢出,可用查詢或中斷來處理;當(dāng)TFX0,表示定時(shí)計(jì)數(shù)無溢出,可用查詢或中斷來處理;IE0IE1為外中斷標(biāo)志:圖4定時(shí)器控制寄存器TCON 當(dāng)IEX1,表示外部有中斷發(fā)生(與ITX配合使用);當(dāng)IEX0,表示外部無中斷發(fā)生(與ITX配合使用);IT0IT1為外中斷觸發(fā)方式選擇位:置ITX1,則外中斷在脈沖下降沿觸發(fā),置1T1=0,則外中斷在低電平觸發(fā)方式,例:定時(shí)器計(jì)數(shù)器T0作定時(shí)器使用,工作在方式1,T1作計(jì)數(shù)器使用,工作在方式2,當(dāng)T0定時(shí)到,先關(guān)閉定時(shí),后開啟計(jì)數(shù)器T1,計(jì)數(shù)到,先關(guān)閉計(jì)數(shù),后開啟定時(shí)器T0,如些往復(fù),試編寫實(shí)現(xiàn)上述過程的程序。分析:先確定方式寄存器的值:由題意知:T

6、MOD01100001BA1H判別定時(shí)計(jì)數(shù)溢出:用LP:JNBTFX,LP語句;采用查詢方式程序設(shè)計(jì): ORG1000HSTART:MOVTMOD,0A1H;設(shè)置TMOD工作方式 SETBTR0 ;開啟定時(shí)器T0 LP:JNBTF0,LP;定時(shí)器無溢出等待 CLRTR0;定時(shí)溢出關(guān)定時(shí)器T0 SETBTR1 ;開計(jì)數(shù)器T1 LJ:JNBTF1,LJ ;計(jì)數(shù)器無溢出等待 CLRTR1 LJMPSTART END3)、中斷允許寄存器IE中斷允許寄存器也是一個(gè)SFR,地址為A8H,可以位尋址,如圖5所示:圖5中斷允許控制寄存器IE通過向IE寫入中斷控制字,實(shí)現(xiàn)CPU對中斷的開放和屏蔽。4、工作方式8

7、0C51單片機(jī)共有四種工作方式,定時(shí)器計(jì)數(shù)器的功能與其工作方式有關(guān):1)、方式0工作在方式0時(shí),內(nèi)部定時(shí)/計(jì)數(shù)器控制邏輯圖如圖6所示,計(jì)數(shù)值由THX(8位)和TLX(低5位)組成13位計(jì)數(shù)器。定時(shí)計(jì)數(shù)值的確定:最大定時(shí)計(jì)數(shù)值最大定時(shí)計(jì)數(shù)值213*機(jī)器周期; 此時(shí),TH00HTL00H定時(shí)計(jì)數(shù)值的確定定時(shí)值計(jì)數(shù)值(213-X)*機(jī)器周期;式中X為THTL的設(shè)置值注意:在實(shí)際運(yùn)算過程中,由于TL的高3位未用,一般應(yīng)填寫O,因此對實(shí)際的計(jì)算結(jié)果要進(jìn)行調(diào)整。如:實(shí)際計(jì)算定時(shí)值,調(diào)整后圖6內(nèi)部定時(shí)計(jì)數(shù)器控制邏輯例:選擇T1工作在方式0用于定時(shí),晶振fosc6MHZ,要求在P1.1輸出1ms方波。分析:由

8、題意得定時(shí)器T1的定時(shí)時(shí)間為:1ms2500us機(jī)器同期:T=12fosc1261062 us設(shè)定時(shí)器的初始值為X,則:(213X)2500 考慮到TL的高三位未用,用0或1來補(bǔ)上,則調(diào)整后的X值為:結(jié)果:TH1F8H;TL106H程序設(shè)計(jì): ORG2000HSTART:MOVTMOD,00HMOVTL1,06H MOVTH1,0F8H SETBTR1LP1:JBCTF1,LP2AJMPLP1LP2:MOVTL1,06H MOVTH1,0F8H AJMP LP1 END2)、方式1方式1在結(jié)構(gòu)與操作上幾乎與方式0相同,不同點(diǎn)有二:一是工作方式設(shè)置,二是方式1是一個(gè)由高THX(8位)和低TLX(

9、8位)共同組成的16位定時(shí)計(jì)數(shù)器。定時(shí)計(jì)數(shù)值(216X)機(jī)器周期3)、方式2方式2是能重置初值的8位定時(shí)器計(jì)數(shù)器,其結(jié)構(gòu)如圖7所示:圖7 定時(shí)計(jì)數(shù)器工作在方式2的結(jié)構(gòu)THX中放復(fù)置值,TLX放定時(shí)計(jì)數(shù)值,通常將兩者取同樣大的數(shù)值用定時(shí)器T1作計(jì)數(shù)器,工作在方式2,要求每計(jì)滿100次,將P1.0端取反,試編制應(yīng)用程序。分析:外部計(jì)數(shù)脈沖從P3.5輸入,每跳變一次計(jì)數(shù)器加1程序采用查詢方式確定工作方式值:TMOD=60H確定計(jì)數(shù)器初值:X=28-100=156D=9CH TH1=9CH;TL1=9CH程序設(shè)計(jì): ORG 1000H START:MOV TMOD, #60H MOV TH1,#9CH

10、 MOV TL1,#9CH SETB TR1 DEL:JBC TF1, REP AJMP DEL AJMP DEL END4)、方式3方式3只適用于定時(shí)器T0。定時(shí)器在方式3下被拆成兩個(gè)獨(dú)立的8位計(jì)數(shù)器TL0和TH0,如圖8所示。TL0占居了T0口的所有資源,TH0只能作簡單的內(nèi)部定時(shí)器使用,它占用T1口的TR1和TF1。圖8 T0方式3結(jié)構(gòu)在定時(shí)器T0用做方式3時(shí),T1仍可設(shè)置為方式02,如圖9所示:(1)T0口在方式3下的控制TL0的控制開啟停止:TR0溢出:TF0TH0的控制開啟停止:TR1溢出:TF1圖9 TO在方式3下T1口結(jié)構(gòu)(2)T0在方式3下的T1口控制T1工作在方式0或方式1

11、下:啟動(dòng):只要設(shè)置好工作方式,T1自動(dòng)啟動(dòng)停止:送入一個(gè)設(shè)置定時(shí)器T1為方式3的方式字輸出:定時(shí)計(jì)數(shù)器輸出送串行口T1工作在方式2下:啟動(dòng)停止方法與T1工作在方式0或方式1下相同。它的輸出也直接送串行口,通常把定時(shí)器T1設(shè)置為方式2作波特率發(fā)生器。5、初始化由于定時(shí)器計(jì)數(shù)器的功能是由軟件編程確定的,因此在使用定時(shí)計(jì)數(shù)器前要對其進(jìn)行初始化,使其按設(shè)定的功能工作。1)、定時(shí)器計(jì)數(shù)器初始化內(nèi)容定時(shí)計(jì)數(shù)器的工作方式:依據(jù)要求定出TMOD的值預(yù)置定時(shí)計(jì)數(shù)器初值:給TH1TL1或TH0TL0賦值根據(jù)要求開放定時(shí)計(jì)數(shù)器的中斷:對IE賦值啟動(dòng)定時(shí)計(jì)數(shù)器2)、實(shí)戰(zhàn)訓(xùn)練例:晶振頻率為6MHZ,使用T0作定時(shí)器,試

12、編寫在P1.3口輸出秒脈沖方波程序。分析: A、確定TMOD的值:TMOD=01HB求TH0和TL0的值:取定時(shí)時(shí)間為125000S,則8個(gè)定時(shí)時(shí)間等于1秒,計(jì)算定時(shí)器初值:機(jī)器周期T=12×1/6×10-6=2S( 216-X)×T=25000 X=6070=17B6HTH017HTLB6HC確定IE的值:由題意知IE00HD啟動(dòng)定時(shí)計(jì)數(shù)器:用SETBTR0來啟動(dòng)定時(shí)器。E程序設(shè)計(jì):程序流程圖如右所示,程序如下: ORG 4100HSTART:MOV TMOD,#01H MOV TH0,#17H MOV TL0,#0B6H SETB TR0 MOV R0,#08

13、H LOOP1:JNB TF0,LOOP1 MOV TH0,#17H MOV TL0,#0B6H DJNZ R0, LOOP1 LJMP LOOP0 END6、應(yīng)用定時(shí)器是單片機(jī)應(yīng)用系統(tǒng)中的重要部件,是實(shí)時(shí)控制系統(tǒng)中不可缺少的部分,靈活應(yīng)用其不同的工作方式可提高編程技巧,減輕CPU負(fù)擔(dān),簡化外圍電路,下面介紹定時(shí)/計(jì)數(shù)器的應(yīng)用:1)、在多任務(wù)應(yīng)用系統(tǒng)中用來定時(shí)計(jì)數(shù)單片機(jī)定時(shí)計(jì)數(shù)器常用來作定時(shí)器或計(jì)數(shù)器使用,對于一個(gè)采用單片機(jī)作為控制核心的系統(tǒng)來說,采用定時(shí)器來定時(shí)計(jì)數(shù),既不要增加硬件投入,又具有定時(shí)準(zhǔn)確等特點(diǎn),同時(shí)不占用CPU資源。2)、用來測量脈沖寬度利用方式控制寄存器TMOD門控位GATE

14、1時(shí),允許外部輸入電平控制啟停定時(shí)器這個(gè)特性,用定時(shí)器來測量外部輸入脈沖的寬度。實(shí)戰(zhàn)訓(xùn)練:分析如何測量圖10所示的方波頻率。B單片機(jī)復(fù)位時(shí),P3.21,當(dāng)檢 圖10外部脈沖測到P3.20時(shí),開啟TR0,等一個(gè)P3.21到來時(shí)開啟定時(shí)器T0,P3.20時(shí)關(guān)閉定時(shí)器T0。C根據(jù)定時(shí)器的定時(shí)值,計(jì)算方波的頻率。3)、在串行通信中作波特率發(fā)生器當(dāng)T0工作在方式3時(shí),T1口工作在方式012下,T1定時(shí)計(jì)數(shù)溢出直接送串行口的特點(diǎn),定時(shí)器T1可以用來作串行通信的波特率發(fā)生器。第二節(jié) 單片機(jī)中斷系統(tǒng)1、中斷1)、與中斷相關(guān)的幾個(gè)概念中斷程序在運(yùn)行過程中,由于外界的原因,CPU暫停當(dāng)前的處理轉(zhuǎn)去執(zhí)行緊急事件,待

15、緊急事件執(zhí)行完畢后再轉(zhuǎn)回執(zhí)行原程序。中斷源引起中斷的原因或觸發(fā)中斷請求的來源。中斷服務(wù)中斷之后執(zhí)行的處理叫中斷服務(wù),對應(yīng)的處理程序叫中斷服務(wù)程序,原程序叫主程序。中斷系統(tǒng)實(shí)現(xiàn)中斷功能而設(shè)置的各種硬件和軟件。注意:正確區(qū)分中斷服務(wù)和調(diào)用子程序。2)、引進(jìn)中斷技術(shù)的優(yōu)點(diǎn)、分時(shí)操作有了中斷功能就能解決快速CPU與慢速外設(shè)之間的矛盾,可以使CPU和外設(shè)同時(shí)工作。、實(shí)時(shí)處理在實(shí)時(shí)控制中,現(xiàn)場的各個(gè)參數(shù)信息是隨時(shí)間和現(xiàn)場情況不斷變化的。有了中斷功能,外界的這些變化量可根據(jù)要求隨時(shí)向CPU發(fā)出中斷請求,要求CPU及時(shí)處理,CPU可以馬上響應(yīng)加以處理。、故障處理計(jì)算機(jī)在運(yùn)行過程中,出現(xiàn)一些事先無法預(yù)料的故障是

16、難免的,例如電源突變存儲(chǔ)出錯(cuò)運(yùn)算溢出等,有了中斷功能,計(jì)算機(jī)就能自行處理,而不必停機(jī)處理。3)、中斷源、外部中斷:INT0、INT1單片機(jī)外部中斷源有INT0、 INT1,每個(gè)中斷源有兩種觸發(fā)方式,一種是電平觸發(fā),另一種是脈沖觸發(fā)方式。具體的觸發(fā)過程如下:電平方式:當(dāng)INT0、INT1對應(yīng)管腳出現(xiàn)低電平時(shí)有效。脈沖方式:在兩個(gè)相鄰機(jī)器周期中,檢測到引腳由高電平到低電平時(shí),表示有中斷發(fā)生。特別注意:電平方式與脈沖方式的區(qū)別:在電平觸發(fā)方式,單片機(jī)在每個(gè)機(jī)器周期都將INT0(或INT1)的信號(hào)讀入IE0(或IE1)中,如果送入8051的中斷信號(hào),未能及時(shí)檢測到,就會(huì)漏掉中斷要求。脈沖方式不存在這個(gè)

17、問題,但脈沖方式必須采用軟件清除IE0(或IE1)。、定時(shí)計(jì)數(shù)器中斷:T1,T2單片機(jī)內(nèi)部有兩個(gè)定時(shí)計(jì)數(shù)器,當(dāng)啟用中斷時(shí),如果計(jì)數(shù)器有溢出,溢出信號(hào)去置位TF0(或TF1)標(biāo)志位,作為單片機(jī)接受中斷請求的標(biāo)志。、串行中斷: 當(dāng)串行口發(fā)送和接收一組串行數(shù)據(jù)時(shí),就產(chǎn)生一個(gè)中斷請求。、中斷優(yōu)先權(quán):按中斷的級(jí)別將中斷分成不同的等級(jí),并按優(yōu)先權(quán)原則執(zhí)行中斷處理,CPU響應(yīng)中斷的順序:a、不同級(jí)別的中斷源同時(shí)申請時(shí)按中斷優(yōu)先權(quán)執(zhí)行;b、同級(jí)別的中斷源同時(shí)申請時(shí)按事先安排的程序執(zhí)行;c、在處理中斷過程中,又有中斷申請時(shí),視其級(jí)別的高低,如果申請的級(jí)別高程序轉(zhuǎn)向申請的中斷,如果申請的級(jí)別低程序繼續(xù)執(zhí)行,直到結(jié)

18、束再轉(zhuǎn)向中斷。對80C51單片機(jī)來說,同一級(jí)別的中斷按下順序執(zhí)行:外部中斷0 定時(shí)/計(jì)數(shù)器T0 T1外部中斷1 定時(shí)/計(jì)數(shù)器 串行口2、單片機(jī)中斷系統(tǒng)1)、單片機(jī)中斷系統(tǒng)單片機(jī)中斷系統(tǒng)如圖11所示:圖11 80C51單片機(jī)中斷系統(tǒng)2)、單片機(jī)中斷入口地址當(dāng)有中斷發(fā)生并且系統(tǒng)開放中斷時(shí),單片機(jī)將自動(dòng)轉(zhuǎn)入固定的入口地址,單片機(jī)的中斷入口地址如表1所示:表1 80C51單片機(jī)中斷入口地址中斷源入口地址中斷源入口地址外部中斷00003HT1溢出001BHT0溢出中斷000BH串行口接收0023H外部中斷10013H串行口發(fā)送0023H3)、單片機(jī)中斷控制單片機(jī)的中斷設(shè)置由下面的四個(gè)控制寄存器確定。中斷

19、充許寄存器IE中斷允許寄存器是一個(gè)SFR,地址為A8H,可以位尋址。通過向IE寫入中斷控制字,實(shí)現(xiàn)CPU對中斷的開放和屏蔽。如圖12所示:EA:中斷允話控制位;ES:串行口中斷;ET1:定時(shí)計(jì)數(shù)器T1;EX1:外部中斷1ET0:定時(shí)計(jì)數(shù)器0;圖12 中斷允許數(shù)寄存器EX0:外部中斷0;定時(shí)控制寄存器TCON定時(shí)控制寄存器TCON也是SFR,字節(jié)地址為88H,可位尋址,位地址為88H8FH,用于控制定時(shí)器的操作與中斷。如圖13所示:圖13 定時(shí)控制寄存器注意:IT11T0:是專門用來設(shè)置外部中斷1和0的觸發(fā)方式的,對于外部中斷INT1INT0來說,用不同的觸發(fā)方式,中斷過程是不一樣的:1T10:

20、為低電平觸發(fā)方式。處于這種觸發(fā)方式時(shí),CPU響應(yīng)中斷后不能自動(dòng)清除IE1標(biāo)志,也不能由軟件清除,因此在中斷返回前發(fā)須撤消INT1引腳上的低電平,否則將再次響應(yīng)中斷。IT01:為脈沖觸發(fā)方式。處于這種觸發(fā)方式時(shí),CPU響應(yīng)中斷后自動(dòng)清除IE1。對于IE0來說觸發(fā)方式與IE1的觸發(fā)方式一樣。串行控制寄存器SCONSCON是一個(gè)可位尋址的專用寄存器,用于串行數(shù)據(jù)通信的控制,單元地址為:98H,位地址與位功能如表2所示:表2 位地址與位功能表位地址 9F 9E 9D 9C 9B 9A 99 98位符號(hào) SM0 SM1 SM2 REN TB8 RB8 TI RI中斷優(yōu)級(jí)控制寄存器IP* * * PS P

21、T1 PX1 PT0 PX0IP:PX0-外部中斷0中斷優(yōu)先級(jí)控制位PT0-定時(shí)/計(jì)數(shù)器T0中斷優(yōu)先級(jí)控制位PX1-外部中斷1中斷優(yōu)先級(jí)控制位PT1-定時(shí)/計(jì)數(shù)器T1中斷優(yōu)先級(jí)控制位PS-串行口中斷優(yōu)先級(jí)控制位3、中斷處理過程單片機(jī)在每一指令的S5P2期間,CPU采樣各中斷源,并設(shè)置相應(yīng)的中斷標(biāo)志位。CPU在下一個(gè)周期S6期間按優(yōu)先級(jí)順序查詢各中斷標(biāo)志,如查詢到某個(gè)中斷標(biāo)志為1,將在下一個(gè)機(jī)器周期S1期間按優(yōu)先級(jí)進(jìn)行中斷處理。中斷處理過程分成三個(gè)階段,即中斷響應(yīng)中斷處理和中斷返回,如圖14所示:1)、中斷響應(yīng)(1)、中斷請求標(biāo)志IE0(外部中斷0)中斷處理時(shí),由硬件復(fù)位。中斷請求中斷響應(yīng)中斷處

22、理中斷返回 TF0(T0)中斷處理時(shí),由硬件復(fù)位 IE1(外部中斷0)中斷處理時(shí),由硬件復(fù)位 TF1(T1)中斷處理時(shí),由硬件復(fù)位 T1(發(fā)送標(biāo)志)中斷處理時(shí),由軟件復(fù)位R1(接收標(biāo)志)中斷處理時(shí),由軟件復(fù)位(2)、中斷響應(yīng) CPU響應(yīng)中斷的條件有中斷源發(fā)出中斷申請對應(yīng)的中斷開放 圖14 中斷處理CPU不是運(yùn)行在中斷服務(wù)程序;也不是處于執(zhí)行RET1或者讀寫IE或IP指令期間,正在執(zhí)行的指令要執(zhí)行完成。(3)、中斷響應(yīng)過程CPU響應(yīng)中斷請求后,自動(dòng)將當(dāng)前的PC值壓入椎棧然后程序轉(zhuǎn)入約定的入口地址,開始執(zhí)行中斷服務(wù)程序。2)、中斷處理中斷處理又叫中斷服務(wù),程序從入口地址開始執(zhí)行,直到返回指令RET

23、I為止,這個(gè)過程稱之為中斷處理。中斷服務(wù)過程包含兩部分內(nèi)容:一是保護(hù)現(xiàn)場,二是處理中斷源的請求。中斷處理過程如圖15所示:保護(hù)現(xiàn)場 將中斷處理程序所用到的如累加器、通用寄存器等參數(shù);入棧保護(hù)。注意在入棧時(shí)應(yīng)關(guān)中斷,入棧完成后再開中斷。圖15 中斷處理中斷服務(wù) 處理中斷事件,它是事先按中斷要求編制的服務(wù)程序?;謴?fù)現(xiàn)場;中斷服務(wù)結(jié)束后,應(yīng)立即關(guān)中斷,恢復(fù)現(xiàn)場;恢復(fù)現(xiàn)場結(jié)束后應(yīng)立即開中斷。注意:中斷請求的撤除:CPU響應(yīng)中斷請求后,在中斷返回前,應(yīng)撤消中斷請求,否則會(huì)引起另一次中斷對于定時(shí)器T0T1以及外部中斷0或1工作在脈沖觸發(fā)方式時(shí),CPU響應(yīng)中斷后,會(huì)自動(dòng)清除中斷標(biāo)志位;對于串行通信中斷請求只

24、能用軟件清除;外部中斷0或外部中斷1工作在低電平觸發(fā)方式時(shí),只有改變觸發(fā)電平,再配以軟件才能清除中斷請求。中斷響應(yīng)的時(shí)間:CPU不是在任何時(shí)候都能響應(yīng)中斷的,因此CPU響應(yīng)中斷的時(shí)間也不一樣。3)、中斷返回在中斷處理完成后用RETI返回主程序指令。4、中斷系統(tǒng)擴(kuò)展1)、利用定時(shí)器擴(kuò)展外部中斷讓定時(shí)計(jì)數(shù)器作計(jì)數(shù)器用,工作在方式2,定時(shí)器的定時(shí)值為0FFH當(dāng)外部來一個(gè)脈沖,定時(shí)計(jì)數(shù)器產(chǎn)生溢出,用定時(shí)計(jì)數(shù)器的溢出作為中斷請求標(biāo)志,這樣就可以增加兩個(gè)外部中斷源。例如:將定時(shí)器T0作為外部中斷源的程序如下:MOVTMOD,06HMOVTL0,0FFHMOVTH0,0FFHSETBTR0SETBEASET

25、BET02)、利用中斷和查詢結(jié)合法擴(kuò)展外部中斷如圖16所示,有多個(gè)外部中斷,只用一個(gè)外部中斷源,采用中斷和查詢相結(jié)合的方法解決外部多中斷請求的問題:解決問題的思路:將外部信號(hào)通過非門后接在一起,作為外部中斷信號(hào),當(dāng)CPU響應(yīng)外部中斷后,查詢外部中斷信號(hào),根據(jù)外部中斷信號(hào)轉(zhuǎn)到相應(yīng)服務(wù)程序,這樣就實(shí)現(xiàn)了用一個(gè)外部中斷源解決多個(gè)外部中斷的問題。中斷服務(wù)程序設(shè)計(jì):中斷服務(wù)程序:CLREAJBP1.0, X10JB P1.1, X11JB P1.2, X12JB P1.3, X13ZDFH:RETI圖16 中斷擴(kuò)展 X10:AJMPZDFHX11:AJMPZDFHX12:AJMPZDFHX13:AJMP

26、ZDFH5、中斷系統(tǒng)應(yīng)用實(shí)例例1:利用定時(shí)器T0定時(shí),在P1.0端輸出一方波,方波周期為20ms。已知晶振頻率為12MHZ。解:定時(shí)器T0工作在方式1,經(jīng)計(jì)算定時(shí)器的初值為:D8F0H程序設(shè)計(jì):ORG0000HLJMP 1000HORG 000BHLJMP 2000HORG 1000H1000H:MOVTMOD,01H MOVTL0,0F0H MOVTH0,0D8H MOVIE,82H SETBTR0LOOP:SJMPLOOP-ORG2000HMOVTL0,0F0HMOVTH0,0D8HRETIEND例2:單片機(jī)P1口的輸出通過與非門接發(fā)光二極管,正常情況發(fā)光二極管從左到右點(diǎn)亮,現(xiàn)系統(tǒng)開發(fā)中斷

27、INT0,當(dāng)有中斷發(fā)生時(shí),燈間隙閃爍16次。試編制相關(guān)程序。解:系統(tǒng)采用軟件定時(shí),定時(shí)時(shí)間為1S,開發(fā)外部中斷INT0。程序設(shè)計(jì):主程序:ORG0000HLJMP1000HORG 0003HLJMP2000HORG1000H1000H:SETBEA SETBEX0 SETBIT0 MOVA,80HLOOP:MOVP1,A LCALL1SMIN RLA LJMPLOOP子程序:1SMIN:MOVR0,0FALOOP1:MOVR1,88HLOOP2:DJNZR1,LOOP2DJNZR0,LOOP1RET中斷服務(wù)程序:ORG2000HMOVR2,10HLOOP3:MOVP1,55HLCALL1SMI

28、NMOVP1,0AAHLCALL1SMINDJNZR2,LOOP3RETIEND第三節(jié) 單片機(jī)串行接口、串行通信1)、計(jì)算機(jī)通信計(jì)算機(jī)通信分并行通信和串行通信兩種。并行通信的各數(shù)據(jù)位同時(shí)傳送,每一位數(shù)據(jù)需一條傳輸線,傳送速度快,傳送距離近,適應(yīng)于計(jì)算機(jī)與周圍設(shè)備之間通信,如打印機(jī),接口電路如圖17 所示。串行通信的數(shù)據(jù)傳送是按位的順序(低位在前,高位在后)和一定的格式傳送。近程串行通信只要將串行口直接相連;遠(yuǎn)程串行通信,計(jì)算機(jī)先將數(shù)字信號(hào)通過MODEM轉(zhuǎn)化成模擬信號(hào)(通?!?”調(diào)制成“1270HZ或2225HZ”;“0”調(diào)制成“1070HZ或2025HZ”),借助于通信電纜實(shí)現(xiàn)遠(yuǎn)距離傳送,在接

29、收端通過MODEM將摸擬信號(hào)轉(zhuǎn)化成數(shù)字信號(hào),串行通信接口示意圖如圖18所示。串行通信是計(jì)算機(jī)的主要通信形式,下面將介紹串行通信:串行通信是計(jì)算機(jī)的主要通信形式,下面將介紹串行通信:2)、串行通信方式串行通信有兩種方式:同步串行通信和異步串行通信。、同步串行通信在同步通信中,數(shù)據(jù)或字符開始處是用一同步字符來指示(一般約定為1-2個(gè)字符),以實(shí)現(xiàn)發(fā)送端和接收端同步,一旦檢測到約定同步字符,下面就連續(xù)按順序接收圖19同步通信的格式數(shù)據(jù)。同步傳送格式如圖19所示: 因?yàn)橥酵ㄐ艛?shù)據(jù)塊傳送時(shí)去掉了字符開始和結(jié)束的標(biāo)志,因此其速度高于異步傳送,但這種方式對硬件結(jié)構(gòu)要求較高。、異步串行通信ASYNC異步串行

30、通信的字符格式:異步串行通信以字符為單位進(jìn)行傳送,圖20是11位串行通信幀格式:圖20 串行通信格式異步串行通信的速率: 數(shù)據(jù)傳輸?shù)乃俾视貌ㄌ芈时硎?。波特?傳送二進(jìn)制數(shù)的位數(shù)/每秒注意:a、波特率不等于有效數(shù)據(jù)位的傳輸速率;b、波特率不等于時(shí)鐘頻率;3)、串行通信的制式、行通信的制式 串行通信的制式如圖21所示,分半雙工制式和 圖21 串行通信制式全雙工制式。 、串行通信信號(hào)的調(diào)制與解調(diào)近程傳送:近程串行數(shù)據(jù)傳送是直接進(jìn)行的,不需要進(jìn)行電平變換和技術(shù)處理,只要接口符合相應(yīng)的標(biāo)準(zhǔn)。 遠(yuǎn)程傳送:遠(yuǎn)程串行數(shù)據(jù)傳送,在發(fā)送端先將數(shù)據(jù)進(jìn)調(diào)制,在接收端要進(jìn)行解調(diào),如圖184)、通信協(xié)議通信協(xié)議是指在計(jì)算

31、機(jī)之間進(jìn)行數(shù)據(jù)傳時(shí)的一些約定,包括通信方式、波特率、命令碼的約定。在計(jì)算機(jī)通信前要設(shè)置通信協(xié)議。2、單片機(jī)串行接口1)、單片機(jī)串行接口單片機(jī)的串行接口是一個(gè)可編程的全雙工通信接口,通過軟件編程它既可用作通用異步接收和發(fā)送器使用,也可作同步移位寄存器使用。、單片機(jī)串行接口單片機(jī)的串行接口如圖22所示,它主要由兩個(gè)數(shù)據(jù)緩沖寄存器SBUF和一個(gè)輸入移位寄存器,以及一個(gè)串行控制寄存器SCON組成。定時(shí)器T1常用做其波特率發(fā)生器。、串行接口工作原理發(fā)送數(shù)據(jù):數(shù)據(jù)送入發(fā)送SBUF,在移位時(shí)鐘控制下,數(shù)據(jù)一位一位發(fā)送,當(dāng)發(fā)送完一幀時(shí),在TI產(chǎn)生中斷請求信號(hào)(人工清0)。接收數(shù)據(jù):SCON的REN位處于允許接

32、收狀態(tài),(REN=1),串行口采樣RXD端,當(dāng)采樣到從1變0時(shí),就認(rèn)定收到起始位。在移位時(shí)鐘的控制下將數(shù)據(jù)送入移寄存器,接收完后將中斷標(biāo)志RI置1。 、幀格式: 圖22 串行口結(jié)構(gòu)單片機(jī)有三種幀格式:a、方式0,以8位數(shù)據(jù)為一幀,無起始位和停止位,先發(fā)送或接收最低位:b、方式1以10位為一幀傳輸,設(shè)有1個(gè)起始位“0”、8個(gè)數(shù)據(jù)位和1個(gè)停止位“1”c、方式2和3以11位為一幀,設(shè)有1個(gè)起始位“0”、8個(gè)數(shù)據(jù)位、1個(gè)可編程位(第九數(shù)據(jù)西半球)D8和1個(gè)停止位“1”:其幀格式如下,可編程位D8由軟件置“1”或清“0”,該位可作檢驗(yàn)位,也可作其它用。2)、串行口控制串行口控制與串行口控制寄存器SCON

33、、電源控制寄存器PCON以及中斷允許寄存器IE有關(guān)。(1)、串行控制寄存器SCONSCON是一個(gè)可位尋址的專用寄存器,用于串行數(shù)據(jù)通信的控制,單元地址為:98H,位地址與位功能如下:位地址 9F 9E 9D 9C 9B 9A 99 98位符號(hào) SM0 SM1 SM2 REN TB8 RB8 TI RISM0、SM1串行口方式選擇位 表3 串行口工作方式SM0SM1工作方式000011102113SM2多機(jī)通信控制位串行口的工作方式如表3所示。在方式2、3下:如果SM2=1;則接收到的第9位數(shù)據(jù)(RB8)為1時(shí),才將接收到的前8位數(shù)據(jù)送入,產(chǎn)生中斷請求(RI=1),否則丟失8位數(shù)據(jù);如果SM2=

34、0;則不論RB8為0還是1,都將接收到的8位數(shù)據(jù)裝入,并產(chǎn)生中斷(RI=1);在方式1下: 如果SM2=1;則只有接收到有效的停止位時(shí),才啟動(dòng)RI,如果SM2=0;接收一幀數(shù)據(jù),停止位進(jìn)處RB8,數(shù)據(jù)進(jìn)入SBUF,才啟動(dòng)RI,在方式0下;SM2=0REN允許接收位:REN=1:允許接收,由軟件置位;REN=0:禁止接收,由軟件復(fù)位;TB8發(fā)送數(shù)據(jù)位在方式2、3下,將要發(fā)送的第9位數(shù)據(jù)放在TB8中在多機(jī)通信中,TB8=0表示主機(jī)發(fā)送的是數(shù)據(jù);TB8=1表示主機(jī)發(fā)送的是地址;RB8-接收數(shù)據(jù)位:方式0不使用這位:方式1下,如果SM2=0,RB8是接收到的停止位:在方式2、3下,存放接收到的第9位數(shù)

35、據(jù):在多機(jī)通信中,如果接收到的RB8=1表示主機(jī)正在查詢地址,接下的地址信號(hào)可以接收TI發(fā)送中斷標(biāo)志:發(fā)送完一幀數(shù)據(jù)TI=1,該位必須用軟件復(fù)位RI接收中斷標(biāo)志:接收完一幀數(shù)據(jù)RI=1;該位必須由軟件復(fù)位(2)、電源控制寄存器PCONPCON是專為CHMOS型單片機(jī)而設(shè)置的專用寄存器,單元地址為87H,不能位尋址:在串行通信中,設(shè)SMOD=1,串行口波特率加倍,系統(tǒng)復(fù)位時(shí),SMOD=0。位 序D7D6D5D4D3D2D1D0位符號(hào)SMOD/GF1GF0PDIDL(3)、中斷控制寄存器IE位地址AFAEADACABAAA9A8位符號(hào)EA/ESET1EX1ET0EX0EA中斷允許總控制位:EA=1

36、,中斷允許:EA=0,中斷禁止:EX0(EX1)外部中斷允許控制位:EX0(EX1)=1,允許外中斷:EX0(EX1)=0,禁止外中斷:ET0(ET1)定時(shí)/計(jì)數(shù)中斷允許控制位:ET0(ET1)=0,禁止定時(shí)(或計(jì)數(shù))中斷;ET0(ET1)=1,允許定時(shí)(或計(jì)數(shù))中斷ES串行中斷允許控制位: ES=1,允許串行中斷;ES=0,禁止串行中斷;(4)、串口通信波特率方式0和方式2的波特率:方式0的波特率:在方式0中,每一個(gè)機(jī)器周期發(fā)送或接收一位數(shù)據(jù),與SMOD無關(guān)。波特率112fosc方式2的波特率:方式2的波特率與PCON中的SMOD有關(guān):當(dāng)SMOD0時(shí),波特率164fosc當(dāng)SMOD1時(shí),波特

37、率132fosc在方式2的波特率可用:波特率2SMOD64fosc方式1和方式3的波特率:方式1和方式3的波特率由定時(shí)器T1的溢出率與SMOD的值決定:波特率2SMOD/32T1溢出率當(dāng)定時(shí)器T0工作在方式3時(shí),定時(shí)計(jì)數(shù)器T1可以工作在方式012三種方式,此時(shí),T1的溢出直接送串行口。其中:SMOD為PCON寄存器最高位的值; 選用定時(shí)器1方式2工作。3)、串口工作方式串行口共有四種工作方式(1)方式0 在方式0下,串行口作同步移位寄存器,以8位數(shù)據(jù)為一幀,先發(fā)送或接收最低位,波特率fosc12,串行口數(shù)據(jù)從RXD(P3.0)輸入或輸出,同步移位脈沖由TXD(P3.1)端送出,這種方式常用來擴(kuò)

38、展IO口。數(shù)據(jù)格式:數(shù)據(jù)發(fā)送:8051 RXD TXD P1014 P/S并行輸入當(dāng)一個(gè)數(shù)據(jù)寫入發(fā)送緩沖器SBUF,串行口即把8位數(shù)據(jù)從低位到高位以fosc12的波特率從RXD端輸出,發(fā)送完置中斷標(biāo)志TI為1,如圖23所示,CD4094是串入并出接口芯片。STB1,輸入端關(guān)閉,但允許8位數(shù)據(jù)并行輸出;當(dāng)STB0時(shí),8位并行數(shù)據(jù)輸出端關(guān)閉,但允許串行數(shù)據(jù)從DATAL輸入。8051 RXD TXD P10并行輸出圖23 串行轉(zhuǎn)并行電路 圖24 并轉(zhuǎn)串電路 數(shù)據(jù)接收:當(dāng)REN1時(shí),串行口處于接收狀態(tài),RXD以波特率為fosc12輸入數(shù)據(jù),當(dāng)SUBF接收到8位數(shù)據(jù),RI置1,如圖24所示,CD4014

39、是并入串出接口芯片。PS1,允許并行輸入,串行輸出關(guān)閉;當(dāng)P/S=0,關(guān)閉并行輸入,允許串行輸出。串行口在方式0的設(shè)置:波特率:fosc12串行口控制寄存器:發(fā)送數(shù)據(jù):SCON00H接收數(shù)據(jù):SCON10H中斷允許寄存器:開中斷:IE90H關(guān)中斷:IE00H例1:CD4094的輸出端接發(fā)光二極管,請編出發(fā)光二極管自左至右以一定的速度輪流顯示的程序。分析:硬件接線如圖所示,CD4094的工作要是:STB1,輸入關(guān)閉,允許8位數(shù)據(jù)并行輸出; STB0,8位并行數(shù)據(jù)輸出端關(guān)閉,允許串行數(shù)據(jù)從DATAL輸入。程序設(shè)計(jì):ORG2000H START:MOVSCON,00H CLRP1.0 ;禁止并行輸出

40、 MOV A,#80H ;起始顯示碼 LOOP:MOV SBUF, #A LOOP1:JNB TI,LOOP1 CLR TI RR A LJMP DS01 LJMP LOOP DS01:例2:如圖所示,并行輸入端接開關(guān),試編制讀開關(guān)狀態(tài)的程序,開關(guān)狀態(tài)放在累加器A中。分析:4014的工作要求是:當(dāng)PS1,允許并行輸入,串行輸出關(guān)閉;當(dāng)P/S=0,關(guān)閉并行輸入,允許串行輸出。程序設(shè)計(jì):ORG2000HSTART:SETBPSMOVSCON,10HCLRPSLOOP:JNBRILOOP MOVA,SBUF END(2)、方式1幀格式:在方式1下,串行口為10位通用異步接口,數(shù)據(jù)格式如下: 數(shù)據(jù)發(fā)送

41、:數(shù)據(jù)寫入緩沖器SUBF,發(fā)送器自動(dòng)啟動(dòng),發(fā)送完一幀數(shù)據(jù)后,把TI標(biāo)志置1,申請中斷,通知CPU發(fā)送下一個(gè)數(shù)據(jù)。注意,TI只能由軟件復(fù)位。數(shù)據(jù)接收:當(dāng)REN1時(shí),串行口采樣引腳RXD(P3.0)。當(dāng)采樣到引腳從1變至0,并得到確認(rèn)后,就開始接收數(shù)據(jù)。當(dāng)停止位到來后,把停止位送入RB8位,中斷標(biāo)志位RI變成1,申請中斷,通知CPU從SBUF中取走數(shù)據(jù)。串行口在方式1的設(shè)置:SCON的設(shè)置:SM0SM101;SM2應(yīng)設(shè)置為0。若在接收時(shí)SM21,則只有收到有效的停止位后,RI才置1。TB8RB8不使用。IE的設(shè)置:開放中斷用EA和ES。波特率的設(shè)置:波特率的設(shè)置與PCON中的SMOD位和定時(shí)器T1

42、的定時(shí)值有關(guān),例:單片機(jī)晶振頻率為:6MHZ,A、B兩機(jī)以方式1進(jìn)行串行數(shù)據(jù)通信,波特率為1200。A機(jī)發(fā)送,發(fā)送數(shù)據(jù)首地址在外部RAM4000H單元,擬定發(fā)送數(shù)據(jù)總數(shù)放在R0中。B機(jī)接收,接收數(shù)據(jù)送外部以RAM5000H為首地址單元中。解:置SMOD=0,設(shè)T0工作在方式3,T1工作在方式2,串行口工作在方式1,則定時(shí)器計(jì)數(shù)初值:發(fā)送接收均采用采用查詢方式:-發(fā)送機(jī)程序-ORG 0000H LJMP START START:MOV TMOD,#23H ;T1工作方式2,T0工作在方式3 MOV TL1,#F2H ;設(shè)計(jì)數(shù)器初值 MOV TH1,#F2H ;計(jì)數(shù)重裝值 MOV PCON,#00

43、H ;波特率不信增 MOV R0,#xd ;置R0初值 MOV DPTR,#4000HSETB TR1 LOOP0:MOVX A,DPTR MOV SBUF, A LOOP1:JNB TI, LOOP1 CLR TI INC DPTR DJNZ R0, LOOP0 END-接收機(jī)程序-主程序:ORG 0000HLJMP STARTSTART:MOV TMOD,#23H MOV TL1, #F2H MOV TH1,#F2H MOV PCON,#00H SETB TR1 MOV SCON,#50H ;設(shè)置串行口方式1,REN=1 MOV DPTR,#5000H MOV R0,#XDLOOP0:JNBRI,LO

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論