單片機(jī)原理及其接口技術(shù)第5章-中斷課件_第1頁
單片機(jī)原理及其接口技術(shù)第5章-中斷課件_第2頁
單片機(jī)原理及其接口技術(shù)第5章-中斷課件_第3頁
單片機(jī)原理及其接口技術(shù)第5章-中斷課件_第4頁
單片機(jī)原理及其接口技術(shù)第5章-中斷課件_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、5.1 中斷5.1.1 概述一、中斷的概念CPU暫停現(xiàn)行程序的運(yùn)行而轉(zhuǎn)為意外事件或特殊請(qǐng)求服務(wù)的過程叫做中斷。CPU中止當(dāng)前程序的執(zhí)行,而去執(zhí)行相應(yīng)的處理程序,待處理結(jié)束后,再回來繼續(xù)執(zhí)行被中止了的原程序。中斷之后所執(zhí)行的處理程序通常稱之為中斷服務(wù)程序或中斷處理子程序,原來運(yùn)行的程序稱為主程序。主程序被斷開的存儲(chǔ)器位置稱為斷點(diǎn)地址,它是PC的當(dāng)前值。調(diào)用中斷服務(wù)程序的過程類似于調(diào)用子程序,主要區(qū)別在于:調(diào)用子程序指令在程序中是事先安排好的,可以確定調(diào)用時(shí)間;而何時(shí)調(diào)用中斷服務(wù)程序事先卻不知道。因?yàn)橹袛嗟陌l(fā)生是由外部或內(nèi)部隨機(jī)事件決定的,其時(shí)刻是在程序設(shè)計(jì)時(shí)是無法預(yù)知的。另外子程序的存放位置由用

2、戶設(shè)定,而每個(gè)中斷服務(wù)程序的存放位置是固定的,稱中斷矢量,中斷時(shí)自動(dòng)轉(zhuǎn)入中斷服務(wù)程序的執(zhí)行,相當(dāng)由硬件調(diào)用子程序。二、引入中斷的優(yōu)點(diǎn)1、分時(shí)操作2、實(shí)現(xiàn)實(shí)時(shí)處理3、故障處理5.1 中斷5.1.1 概述三、中斷源引發(fā)中斷的原因或向CPU發(fā)出中斷請(qǐng)求的來源稱為中斷源。通常的中斷源有:外設(shè)、定時(shí)時(shí)鐘、故障源等。8051有3類共5個(gè)中斷源:外部中斷源2個(gè):外部中斷0、外部中斷1,它們的中斷請(qǐng)求信號(hào)分別由引腳(P3.2)和(P3.3)從外部引入。中斷矢量表中存儲(chǔ)器位置為0003H和0013H;定時(shí)/計(jì)數(shù)中斷源2個(gè):定時(shí)器T0和定時(shí)器T1的中斷請(qǐng)求TF0(TCON.5)、TF1(TCON.7)。計(jì)數(shù)器發(fā)生

3、計(jì)數(shù)溢出時(shí)從內(nèi)部產(chǎn)生。在中斷向量表中固定存放在000BH和001BH;串行中斷源1個(gè)。發(fā)送或接收中斷請(qǐng)求TI(SCON.1)或RI(SCON.0)。當(dāng)串行口發(fā)送或接收一幀數(shù)據(jù)時(shí),內(nèi)部產(chǎn)生中斷請(qǐng)求。這一中斷在中斷矢量表中的0023H。5.1.2 8051中斷處理步驟 CPU須在執(zhí)行完當(dāng)前指令后,將程序計(jì)數(shù)器PC的內(nèi)容壓入堆棧,保護(hù)斷點(diǎn)地址;根據(jù)不同的中斷源,程序轉(zhuǎn)向相應(yīng)中斷矢量表;CPU從中斷中斷矢量表得到中斷服務(wù)程序的入口地址,去執(zhí)行中斷服務(wù)程序,直到返回指令“RETI”為止;中斷返回指令從堆棧把斷點(diǎn)地址彈出,送回到程序計(jì)數(shù)器PC中去,繼續(xù)執(zhí)行原來的程序。5.1 中斷5.1.3 8051中斷控

4、制用戶通過向控制寄存器寫入不同的內(nèi)容可以對(duì)各中斷進(jìn)行控制。向控制寄存器寫入的內(nèi)容稱控制字。寫入控制字的過程稱初始化。那些可以通過初始化寫入控制字的端口稱控制寄存器。 一、中斷請(qǐng)求標(biāo)志與請(qǐng)求方式控制8051單片機(jī)的5個(gè)中斷源發(fā)出中斷時(shí)產(chǎn)生的中斷標(biāo)志,分別存放在定時(shí)控制寄存器TCON和串行口控制寄存器SCON的各位中,作為有中斷申請(qǐng)尚未處理或正在處理的記錄,處理完畢自動(dòng)或通過軟件清除。1、定時(shí)器/計(jì)數(shù)器控制寄存器TCON(Timer Control)5.1 中斷5.1.3 8051中斷控制一、中斷請(qǐng)求標(biāo)志與請(qǐng)求方式控制2、串行口控制寄存器SCON(Serial Control)寄存器地址為98H,

5、可位尋址,位地址為9FH98H。其中與中斷有關(guān)的標(biāo)志位共有兩位:TI串行口發(fā)送中斷請(qǐng)求標(biāo)志位。在方式1下,當(dāng)發(fā)送完一幀數(shù)據(jù)后,在停止位發(fā)送前由硬件置1;在轉(zhuǎn)向中斷服務(wù)程序后,用軟件清0。串行口發(fā)送查詢狀態(tài)位。當(dāng)發(fā)送完一幀數(shù)據(jù)后,在停止位發(fā)送前由硬件置1;軟件清0。RI串行口接收中斷請(qǐng)求標(biāo)志位。在方式1下,當(dāng)接收完一幀數(shù)據(jù)后,在停止位接收后由硬件置1;在轉(zhuǎn)向中斷服務(wù)程序后,用軟件清0。串行口接收查詢狀態(tài)位,當(dāng)接收完一幀數(shù)據(jù)后,在停止位接收后由硬件置1;軟件清0。串行中斷請(qǐng)求由TI和RI的邏輯或得到。就是說,無論是發(fā)送標(biāo)志還是接收標(biāo)志,都會(huì)產(chǎn)生串行中斷請(qǐng)求。5.1 中斷5.1.3 8051中斷控制

6、二、中斷允許控制寄存器IE(Interrupt Enable)寄存器地址A8H,可位尋址,位地址A8HAFH。功能:中斷請(qǐng)求允許或禁止。其中與中斷有關(guān)的控制位共6位8051單片機(jī)通過IE對(duì)中斷的開放和關(guān)閉實(shí)行兩級(jí)控制,就是以EA位為總控制位,各中斷源的中斷允許為分控制位。它們?yōu)榇?lián)控制,即只有當(dāng)總控制位和分控制位都為“1”時(shí),對(duì)應(yīng)中斷源才被開放。 5.1 中斷5.1.3 8051中斷控制三、中斷優(yōu)先級(jí)控制寄存器IP(Interrupt Priority)1、中斷優(yōu)先級(jí)多個(gè)中斷源排隊(duì),CPU按照其要求的輕重緩急處理,稱中斷優(yōu)先級(jí)。2、中斷優(yōu)先級(jí)控制原則(1) 不同級(jí)的中斷源同時(shí)申請(qǐng)中斷時(shí)先高后低

7、;(2) 同級(jí)的中斷源同時(shí)申請(qǐng)中斷時(shí)事先規(guī)定;(3) 處理低級(jí)中斷又收到高級(jí)中斷請(qǐng)求時(shí)停低轉(zhuǎn)高;(4) 處理高級(jí)中斷又收到低級(jí)中斷請(qǐng)求時(shí)高不理低。3、中斷優(yōu)先級(jí)寄存器IP(Interrupt Priority)8051單片機(jī)中斷系統(tǒng)具有高、低兩個(gè)優(yōu)先級(jí)別,只允許兩層中斷嵌套。5個(gè)中斷源的優(yōu)先級(jí)別由中斷優(yōu)先級(jí)控制寄存器IP控制。IP寄存器地址為B8H,可位尋址,位地址為B8HBFH。 5.1 中斷5.1.3 8051中斷控制三、中斷優(yōu)先級(jí)控制寄存器IP(Interrupt Priority)當(dāng)該位為0時(shí),其優(yōu)先級(jí)為低;當(dāng)該位為1時(shí),其優(yōu)先級(jí)為高。系統(tǒng)復(fù)位后,IP000000B,將所有中斷源設(shè)置為

8、低優(yōu)先級(jí)中斷。此時(shí),CPU對(duì)5個(gè)中斷源的查詢次序?yàn)椋豪?,如果將IP中設(shè)置為12H,則PS和PT0均為高優(yōu)先級(jí)中斷,但當(dāng)這兩個(gè)中斷源同時(shí)發(fā)出中斷申請(qǐng)時(shí),CPU仍然先響應(yīng)自然優(yōu)先級(jí)高的PT0的中斷申請(qǐng)。5.1.3 8051中斷控制例5-1 要使用外部中斷0,脈沖觸發(fā),高優(yōu)先級(jí),初始化程序如下: ORG 0000H AJMP MAIN;轉(zhuǎn)至主程序執(zhí)行 ORG 0003H AJMP EINT0;轉(zhuǎn)至中斷服務(wù)程序執(zhí)行 ORG 0030HMAIN:MOVSP,#60H;建立堆棧指針 SETBIT0;設(shè)外中斷0為脈沖觸發(fā)方式 SETBPX0 ;設(shè)外中斷0為高優(yōu)先級(jí) SETBEA;開中斷 SETBEX0;允

9、許外中斷0中斷 ORG 0100HEINT0: RETI END5.1.4 8051中斷程序的設(shè)計(jì)及應(yīng)用一、中斷初始化程序設(shè)計(jì)用戶在使用中斷前需要先通過程序設(shè)置以上寄存器以確定:中斷觸發(fā)方式、中斷開放、中斷允許、中斷優(yōu)先級(jí)等,這被稱為中斷初始化。同時(shí)要對(duì)中斷矢量表進(jìn)行安排。并設(shè)置堆棧指針SP的初值。二、中斷服務(wù)程序設(shè)計(jì)1、中斷矢量的第一句常為一跳轉(zhuǎn)指令,轉(zhuǎn)移到中斷處理程序執(zhí)行;2、現(xiàn)場保護(hù)在中斷處理程序的前面,現(xiàn)場恢復(fù)必須在中斷服務(wù)程序的最后段,常使用堆棧操作進(jìn)行,注意先進(jìn)后出的順序。因?yàn)橹袛喟l(fā)生的時(shí)刻是隨機(jī)的,中斷處理程序中使用到的寄存器或存儲(chǔ)器都應(yīng)盡量進(jìn)行保護(hù);3、中斷處理程序最后一條指令

10、必須是中斷返回指令RETI。 例5-3 采用外部中斷實(shí)現(xiàn)。按奇數(shù)次按鈕發(fā)光二極管亮,按偶數(shù)次按鈕發(fā)光二極管滅,如此反復(fù)。解:選擇脈沖觸發(fā)方式: ORG0000H LJMPMAIN ORG0003H LJMPISR_X0 ORG0200HMAIN: SETBIT0;脈沖觸發(fā)方式 SETBEA;開中斷 SETBEX0;允許外部中斷0中斷 SJMP$;等待中斷 ORG0300HISR_X0:CPLP1.0;控制發(fā)光二極管開閉 RETI END5.2 定時(shí)器/計(jì)數(shù)器 5.2.1 概述一、定時(shí)器/計(jì)數(shù)器的基本功能1、定時(shí)功能利用計(jì)算機(jī)定時(shí)可分軟件和硬件兩類。軟件定時(shí)是靠執(zhí)行一個(gè)循環(huán)程序以獲得時(shí)間的延遲。

11、軟件定時(shí)的特點(diǎn)是時(shí)間精確,且不需外加硬件電路。但軟件定時(shí)要占用CPU,增加了CPU的開銷。硬件定時(shí)可采用專門的定時(shí)器芯片完成。軟件編程的方法是利用系統(tǒng)時(shí)鐘構(gòu)成時(shí)間基準(zhǔn),對(duì)其計(jì)數(shù)就構(gòu)成一段延時(shí)。計(jì)數(shù)值通過程序設(shè)定,改變計(jì)數(shù)值也就改變了定時(shí)時(shí)間。2、計(jì)數(shù)功能由于采用計(jì)數(shù)方法實(shí)現(xiàn)定時(shí),一般可編程定時(shí)器都兼有計(jì)數(shù)功能,可對(duì)外部脈沖進(jìn)行計(jì)數(shù)。二、定時(shí)器/計(jì)數(shù)器的工作原理定時(shí)器/計(jì)數(shù)器實(shí)質(zhì)上是一個(gè)計(jì)數(shù)器。8051是加1計(jì)數(shù),對(duì)計(jì)數(shù)器設(shè)置計(jì)數(shù)初值,發(fā)啟動(dòng)計(jì)數(shù)命令,計(jì)數(shù)器對(duì)計(jì)數(shù)脈沖計(jì)數(shù),每來一個(gè)計(jì)數(shù)脈沖,其內(nèi)容加1,當(dāng)二進(jìn)制計(jì)數(shù)值達(dá)到全1后,再來一個(gè)計(jì)數(shù)脈沖溢出,表示計(jì)數(shù)工作完成。如加1計(jì)數(shù)器的位數(shù)是8位,最

12、大計(jì)數(shù)值是28256,每次計(jì)數(shù)到256就會(huì)產(chǎn)生溢出。如灌裝生產(chǎn)線中需要包裝一打12瓶飲料,要求每計(jì)數(shù)到12產(chǎn)生溢出。因此加1計(jì)數(shù)值需要預(yù)置,即計(jì)數(shù)不是從0開始,而是從一個(gè)固定值開始。如果要計(jì)數(shù)12,預(yù)先在加1計(jì)數(shù)器里放進(jìn)244,加12個(gè)脈沖就到了256溢出,這個(gè)244被稱為預(yù)置值。 三、8051定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)定時(shí)器/計(jì)數(shù)器的核心是兩個(gè)16位的加1計(jì)數(shù)器T0和T1,分別由兩個(gè)8位專用寄存器構(gòu)成,即:T0由TH0和TL0構(gòu)成;T1由TH1和TL1構(gòu)成。加1計(jì)數(shù)器的工作方式是可編程的,其工作方式由一個(gè)8位的定時(shí)器方式寄存器TMOD和一個(gè)8位的定時(shí)器控制寄存器TCON的內(nèi)容確定。這些寄存器之間是

13、通過內(nèi)部總線和控制邏輯電路連接起來的。加1計(jì)數(shù)器的初值和工作方式控制字是由CPU通過指令經(jīng)數(shù)據(jù)總線送達(dá)的。當(dāng)定時(shí)器/計(jì)數(shù)器工作在計(jì)數(shù)方式時(shí),外部事件通過引腳T0(P3.4)和T1(P3.5)輸入。兩個(gè)定時(shí)器/計(jì)數(shù)器都具有定時(shí)和計(jì)數(shù)功能。5.2.1 概述一、工作方式15.2.2 定時(shí)器/計(jì)數(shù)器的工作方式二、工作方式25.2.2 定時(shí)器/計(jì)數(shù)器的工作方式工作方式2具有自動(dòng)加載功能,即自動(dòng)加載計(jì)數(shù)初值,因此也可以說方式2是自動(dòng)重裝工作方式。在這種方式下,把16為計(jì)數(shù)器分為兩部分,即TL1用作8位計(jì)數(shù)器,TH1用以保持初值。在程序初始化時(shí),TL1和TH1由軟件賦予相同的初值。一旦TL1計(jì)數(shù)溢出,則置位

14、TF1,并將TH1中的初值再裝入TL1,繼續(xù)計(jì)數(shù),循環(huán)重復(fù)不止。這種工作方式可省去用戶軟件中重裝常數(shù)的程序,并可產(chǎn)生相當(dāng)精度的定時(shí)時(shí)間,特別適用于作串行口波特率發(fā)生器。但這種工作方式是8位計(jì)數(shù)結(jié)構(gòu),計(jì)數(shù)值有限,最大只能到256次。5.2.3 定時(shí)器/計(jì)數(shù)器的控制寄存器 定時(shí)器/計(jì)數(shù)器是一種可編程器件,所以開始工作之前,CPU必須將一些命令(稱為控制字)寫入定時(shí)器/計(jì)數(shù)器。將控制字寫入定時(shí)器/計(jì)數(shù)器的過程叫定時(shí)器/計(jì)數(shù)器的初始化。在初始化程序中,要將工作方式控制字寫入方式寄存器TMOD,工作狀態(tài)控制字(或相關(guān)位)寫入控制寄存器TCON,并在需要時(shí)通過中斷優(yōu)先級(jí)控制寄存器IP確定中斷優(yōu)先級(jí)。一、定

15、時(shí)器/計(jì)數(shù)器工作方式控制寄存器TMOD(Timer Mode)T0和T1使用同一寄存器TMOD來設(shè)定不同的操作方式。TMOD是8位的寄存器,其低4位供T0使用,其高4位留作T1使用。字節(jié)地址為89H。 5.2.3 定時(shí)器/計(jì)數(shù)器的控制寄存器5.2.4 定時(shí)器/計(jì)數(shù)器初始化(1)確定工作方式:對(duì)TMOD進(jìn)行賦值;(2)預(yù)置定時(shí)或計(jì)數(shù)的初值:直接將初始值寫入TH0、TL0或TH1、TL1;(3)根據(jù)需要允許定時(shí)器/計(jì)數(shù)器的中斷:直接對(duì)IE對(duì)應(yīng)位賦值;(4)啟動(dòng)定時(shí)器/計(jì)數(shù)器:若規(guī)定用軟件啟動(dòng),則可把TR0或TR1置1;若規(guī)定由外中斷引腳電平啟動(dòng),則需給外引腳加啟動(dòng)電平。當(dāng)實(shí)現(xiàn)了啟動(dòng)要求之后,定時(shí)器

16、/計(jì)數(shù)器即按規(guī)定的工作方式和初值開始計(jì)數(shù)或定時(shí)。5.2.5 應(yīng)用舉例5.2.5 應(yīng)用舉例指令“JBC TF1,LOOP”的作用等價(jià)于“JB TF1,LOOP”、“LOOP:CLR TF1” 5.2.5 應(yīng)用舉例5.2.5 應(yīng)用舉例5.3 串行接口5.3.1 串行通信基礎(chǔ)知識(shí)一、串行通信與并行通信計(jì)算機(jī)與外界的信息交換稱為數(shù)據(jù)通信。數(shù)據(jù)通信方式有兩種:串行通信與并行通信。并行通信中,一個(gè)并行數(shù)據(jù)占多少位二進(jìn)制數(shù),就要多少根傳輸線,即信息傳輸線的根數(shù)和傳送的數(shù)據(jù)位數(shù)相等,數(shù)據(jù)所有位的傳輸同時(shí)進(jìn)行,通信速度快。串行通信的僅需一到兩根傳輸線,逐位按順序傳送,故在長距離傳輸數(shù)據(jù)時(shí)比較經(jīng)濟(jì),但由于它每次只

17、能傳送一位,所以傳輸速度較慢,適合于遠(yuǎn)距離傳送。8051單片機(jī)既有并行通信又有串行通信,它的并行通信是由并行口實(shí)現(xiàn)的,同一時(shí)刻輸入或輸出8位數(shù)據(jù),串行通信是由串行口實(shí)現(xiàn)的,通過兩機(jī)RXD、TXD的對(duì)接實(shí)現(xiàn)。因?yàn)閿?shù)據(jù)在主機(jī)內(nèi)部是并行的,所以必須通過串行口的并行輸入串行輸出移位寄存器轉(zhuǎn)化為串行數(shù)據(jù),然后才可能被發(fā)送;在接收端的串行口有一個(gè)串行輸入并行輸出的移位寄存器,來接收串行數(shù)據(jù)且將其壓縮成一個(gè)字節(jié)。5.3.1 串行通信基礎(chǔ)知識(shí)二、串行通信傳送方式串行通信中,數(shù)據(jù)自通信線上的傳送方式有3種:單工方式、半雙工方式和全雙工方式:(1)單工方式(Simplex):這種方式只允許數(shù)據(jù)按一個(gè)固定的方向傳送

18、;(2)半雙工方式(Half-doplex):數(shù)據(jù)可以從A發(fā)送到B,也可以由B發(fā)送到A。但A、B之間只有一根傳輸線。因此同一時(shí)刻只能作一個(gè)方向的傳送。其傳送方向由收發(fā)控制開關(guān)切換。平時(shí)一般讓A、B方都處于接收狀態(tài),以便能夠隨時(shí)響應(yīng)對(duì)方的呼叫;(3)全雙工方式(Full-doplex):數(shù)據(jù)可同時(shí)在兩個(gè)方向上傳送。8051單片機(jī)的串行通信是全雙工方式,可隨時(shí)發(fā)送或接收數(shù)據(jù)。不管哪種形式的串行通信,在A、B之間均應(yīng)有共地線。5.3.1 串行通信基礎(chǔ)知識(shí)5.3.2 8051串行接口結(jié)構(gòu)5.3.3 串行口控制寄存器5.3.4 波特率的設(shè)計(jì)5.3.5 串行工作方式一、串行口工作方式0把串行接口作為移位寄存器使用。其波特率是固定的,即一個(gè)機(jī)器周期移位一次,數(shù)據(jù)由RXD端輸出

溫馨提示

  • 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. 人人文庫網(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)論