第五章 MCS-51-定時計數(shù)器_第1頁
第五章 MCS-51-定時計數(shù)器_第2頁
第五章 MCS-51-定時計數(shù)器_第3頁
第五章 MCS-51-定時計數(shù)器_第4頁
第五章 MCS-51-定時計數(shù)器_第5頁
已閱讀5頁,還剩77頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第五章MCS-51定時/計數(shù)器、串行口及中斷系統(tǒng)

本章重點討論:

1.定時/計數(shù)器;

2.全雙工串行口;3.中斷系統(tǒng)。5.1MCS-51定時/計數(shù)器5.1.1定時器/計數(shù)器的基本概念5.1.2MCS-51定時/計數(shù)器的組成5.1.3定時器/計數(shù)器的控制方法5.1.4定時器、計數(shù)器的初始化5.1.5舉例5.1.6定時計數(shù)器總結(jié)計數(shù)概念的引入1生活中計數(shù)的例子處處可見。例:錄音機上的計數(shù)器、家里面用的電度表、汽車上的里程表等等。再舉一個工業(yè)生產(chǎn)中的例子,線纜行業(yè)在電線生產(chǎn)出來之后要計米,也就是測量長度,怎么測法呢?用尺量?不現(xiàn)實,太長不說,要一邊做一邊量呢,怎么辦呢?行業(yè)中有很巧妙的方法,用一個周長是1米的輪子,將電纜繞在上面一周,由線帶輪轉(zhuǎn),這樣輪轉(zhuǎn)一周不就是線長1米嘛,所以只要記下輪轉(zhuǎn)了多少圈,就可以知道走過的線有多長了。計數(shù)概念的引入2石油工業(yè)中,也有大量計數(shù)的問題。比如如何確定油層的深度?通常采用的方法是在裸眼井完鉆測井以后,需要下金屬套管固井,每一根套管的長度是一樣的,比如10米,在每根套管的接箍處都打上磁標記。下完套管就要用水泥固井,然后套管就被永久埋在地下。為了產(chǎn)出石油,下一步就是在測井以后確定的層位處射孔。這時在射孔槍的上面就通過電纜接了一根磁定位儀器,這個儀器可以測量到套管接箍上的磁標記,并且可以計量磁標記的數(shù)目,因此就可以確定射孔槍的目標油層的深度。當然10m以內(nèi)的深度是靠地面測量電纜長度確定的。計數(shù)器的容量1從一個生活中的例子看起:一個水盆在水龍頭下,水龍沒關(guān)緊,水一滴滴地滴入盆中。水滴不斷落下,盆的容量是有限的,過一段時間之后,水就會逐漸變滿。那么單片機中的計數(shù)器有多大的容量呢?8031單片機中有兩個計數(shù)器,分別稱之為T0和T1,這兩個計數(shù)器分別是由兩個8位的RAM單元組成的,即每個計數(shù)器都是16位的計數(shù)器,最大的計數(shù)量是65535。計數(shù)器的容量2一般的下井電纜長度在7000m,根據(jù)井眼長度的不同還有更長或更短的電纜,可以依據(jù)需要選取。因此,計數(shù)器的容量就是由電纜長度決定的。計數(shù)與定時的關(guān)系8031中的計數(shù)器除了可以作為計數(shù)之用外,還可以用作時鐘,時鐘的用途當然很大,如學校的打鈴器,電視機定時關(guān)機,空調(diào)定時開關(guān)等等,那么計數(shù)器是如何作為定時器來用的呢?一個鬧鐘,將它定時在1個小時后鬧響,換言之,也可以說是秒針走了(3600)次后鬧響,所以時間就轉(zhuǎn)化為秒針走的次數(shù),也就是計數(shù)的次數(shù)了??梢?,計數(shù)的次數(shù)和時間之間的確十分相關(guān)。那么它們的關(guān)系是什么呢?那就是秒針每一次走動的時間正好是1秒。因此只要計數(shù)脈沖的間隔相等,計數(shù)脈沖的周期已知,則計數(shù)值就代表了時間的流逝。溢出讓我們再來看水滴的例子,當水不斷落下,盆中的水不斷變滿,最終有一滴水使得盆中的水滿了。這時如果再有一滴水落下,就會發(fā)生什么現(xiàn)象?水會漫出來,用個術(shù)語來講就是“溢出”。水溢出是流到地上,而計數(shù)器溢出后將使得TF0變?yōu)椤?”。至于TF0是什么我們稍后再談。一旦TF0由0變成1,就是產(chǎn)生了變化,產(chǎn)生了變化就會引發(fā)事件,就象定時的時間一到,鬧鐘就會響一樣。溢出2

如果電纜的最大長度為7000m,那么磁標記計數(shù)器計滿700以后,就要產(chǎn)生一個溢出信號,這個溢出信號意味著電纜已經(jīng)放到頭了,需要地面的纜車立即停止工作,否則可能造成射孔槍落井的事故。計數(shù)器溢出后會引發(fā)什么事件,我們下面再介紹,現(xiàn)在我們來研究另一個問題:要有多少個計數(shù)脈沖才會使TF0由0變?yōu)??任意定時及計數(shù)的方法剛才已研究過,MCS-51計數(shù)器的容量是16位,也就是最大的計數(shù)值到65536,因此計數(shù)計到65536就會產(chǎn)生溢出。問題是在現(xiàn)實生活中,經(jīng)常會有少于65536個計數(shù)值的要求,如包裝線上,一打為12瓶,一瓶藥片為100粒,怎么樣來滿足這個要求呢?提示:如果是一個空的盆要10000滴水滴進去才會滿,如果在開始滴水之前就先放入一勺水,還需要10000滴嗎?我們采用預置數(shù)的方法,要計數(shù)100次,那就先放進65436,再來100個脈沖,不就到了65536了嗎。定時也是如此,每個脈沖是1微秒,則計滿65536個脈沖需時65.536毫秒。如果現(xiàn)在只要10毫秒定時怎么辦?10個毫秒為10000個微秒,所以,只要在計數(shù)器里面放進65536-10000=55536就可以了。5.1.2MCS-51定時/計數(shù)器的組成T1與定時/計數(shù)器相關(guān)的特殊功能寄存器

特殊功能寄存器:

TH0TH1存放計數(shù)初值的高8位

TL0TL1存放計數(shù)初值的低8位

TMOD(定時器工作模式寄存器)TCON(定時器控制寄存器)

T0和T1都是16位的可預置加1計數(shù)器

T0和T1都是16位的可編程定時/計數(shù)器

T0由兩個8位的寄存器TH0和TL0組成

T1由兩個8位的寄存器TH1和TL1組成5.1.3定時器/計數(shù)器的控制方法

定時器/計數(shù)器的工作由TCON和TMOD控制。由軟件把控制字寫入TCON和TMOD,用來設(shè)置T0和T1的工作方式和控制功能。當8051系統(tǒng)復位時,TCON和TMOD所有位都被清0。一.工作模式控制寄存器—TMOD(89H)定時器工作模式寄存器TMODGATEC/TM10MGATEC/T1M0M控制T1控制T089H和T類同01M0M00011011方式方式0方式1方式2方式301定時器模式計數(shù)器模式01與INT無關(guān)00與INT有關(guān)二.定時器控制寄存器—TCON(88H)

定時器工作模式寄存器TCON

M1和M0工作方式選擇位這兩位可形成四種編碼,對應四種工作方式:

M1M0方式功能描述

000為13位定時器/計數(shù)器,TL存放低5位,TH存高8位

011為16位定時器/計數(shù)器

102可自動再裝入的8位定時器/計數(shù)器

113僅適于T0,兩個8位定時器/計數(shù)器三.定時器/計數(shù)器的四種工作模式方式0

高8位和低5位的一個13位計數(shù)器的運行方式,見下圖.

當TL1的低5位溢出時,向TH1進位,而TH1溢出(回零)時向TF1標志進位(硬件置位TF1),并申請中斷。還可以通過查詢TF1是否置位來判斷TH1是否回零溢出。啟動控制

B=TR1A=TR1(INT1+/GATE)

GATETRxINTx啟動情況

00X停止

01X啟動定時/計數(shù)

10X停止

11啟動定時/計數(shù)

11停止

其中:1表示高電平,0表示低電平,X表示任意狀態(tài)

方式1

方式1是一個16位定時器/計數(shù)器,見下圖。方式1的結(jié)構(gòu)幾乎與方式0完全一樣,唯一的差別是:方式1中的TH1(TH0)和TL1(TL0)均是8位的,構(gòu)成16位計數(shù)器。

方式2

在方式2時,T/C被拆成一個8位的寄存器TH1(TH0)和一個8位計數(shù)器TL1(TL0),兩者構(gòu)成可以自動重裝載的8位T/C,如圖所示。

每當它計滿回零時1.將溢出標志TF1置“1”,若中斷開放,向CPU發(fā)出溢出中斷請求;2.從TH1(或TH0)中重新獲得初值并啟動計數(shù);

也就是CPU自動將TH1(或TH0)中存放的初值重新裝回到TL1(或TL0),并在此初值的基礎(chǔ)上對TL1(或TL0)開始新一輪計數(shù),周而復始,直到下停止計數(shù)或更改工作方式命令為止。

方式3方式3只適合于定時器T0,

TH0和TL0按兩個獨立的8位計數(shù)器工作.5.1.4定時器、計數(shù)器的初始化1.初始化的步驟

MCS-51內(nèi)部的T/C是可編程的,其工作方式和模式通過程序進行設(shè)定和控制,稱為對T/C的初始化。初始化的步驟是:

1)

確定工作方式,即根據(jù)題目要求先給TMOD送一個方式控制字。

2)計算計數(shù)初值/定時初值,并寫入TH0、TL0或TH1、TL1中。

3)根據(jù)需要,置位EA使CPU開放中斷,同時置位ETx允許T/C中斷。IP設(shè)定中斷優(yōu)先級。

4)給TCON送命令控制字,即置位TRx啟動T/C計數(shù)。

2.計數(shù)器初值的計算

T/C在計數(shù)模式下,計數(shù)之前必須給它的計數(shù)器TH0、TL0或TH1、TL1選送計數(shù)初值。T/C的計數(shù)器是在計數(shù)初值的基礎(chǔ)上加1計數(shù)的,當計數(shù)器回“0”時自動產(chǎn)生溢出,置位TFx中斷標志,向CPU提出中斷請求。設(shè)需要計數(shù)器計數(shù)的個數(shù)為X,計數(shù)初值為C,由此可得出如下計算計數(shù)初值的通式:計數(shù)初值:C=M-X(5—1)式中,M為計數(shù)器的模值,該值和計數(shù)器的工作方式有關(guān)。當方式0時

M=當方式1時(5—2)當方式2、3時[例5-1]利用T0方式1產(chǎn)生1ms的定時,在P1.0引腳上輸出周期為2ms的方波。設(shè)單片機晶振頻率fosc=12MHZ。解:

(1)確定T0的工作方式要在P1.0輸出周期為2ms的方波,只要使P1.0每隔1ms 取反一次即可。

(2)確定T0的方式控制字若用方式1,設(shè)置TMOD=01H(3)計算定時初值

Tcy=12/fosc=12/(12×106

)S=1μs

計數(shù)個數(shù):X=1ms/1μs=1000

定時初值:若采用方式0,13位,則

C=(-X)=8192-1000=7192D

=1C18H=1110000011000B

高8位0E0H低5位18HTH0初值為0E0H,TL0初值為18H。若采用方式1,16位,則定時初值:C=65536-1000=64536=FC18HTH0初值為0FCH,TL0初值為18H

ORG 0000H SJMP 0030H ORG 0030H MOV TMOD,#01H SETB TR0LOOP:MOVTH0,#0FCH MOV TL0,#18H JNB TF0,$ CPL P1.0 CLR TF0 SJMP LOOP END查詢方式START設(shè)定工作方式啟動T0定時載入初值TF0=0?否是輸出方波軟件TF0=0END4)

查詢方式:可以使CPU采用查詢TF0的方式處理T/C0定時溢出,編程簡單,但效率較低。程序中查詢采用JNBTF0,$指令,目的是當判到TF1=1后,必須用軟件復位TF1,為下次計數(shù)器回零溢出做好準備,這條指令具有判TF1為1后清零的雙重功能。[例5-2]利用GATE門控位測量從INT1引腳輸入的正脈沖寬度。解:1.確定工作方式

(1)送方式控制字

(TMOD)=10010000B=90H;

T/C1定時,方式1,GATE=1。(2)計算初值

由于被測正脈沖寬度未知,假設(shè)寬度<=65.536ms,fosc=12MHz,則:計數(shù)個數(shù):X=65536(最大)定時初值:C=65536-X=65536-65536=0,(TH1)=00H,(TL1)=00H。

(3)編程方法

對P3.3(INT1)引腳輸入的脈沖采用查詢的方法。

P3.3

(INT1)

被測脈寬置1TR1 TH1TL1從0開始計數(shù)清0TR1,停止T/C1計數(shù)脈沖測試原理

ORG0000H

SJMP0030HORG0030HMAIN:MOVTMOD,#90H ;置T1方式控制字

MOVTL1,#00H ;

MOVTH1,#00H ;T1從0開始計數(shù)

JBP3.3,$

;等低電平

SETBTR1 ;T1允許計數(shù)

JNBP3.3,$

;等高電平

JBP3.3,$

;等低電平

CLRTR1 ;停止計數(shù)

程序清單:

5.1.6定時計數(shù)器總結(jié)在單片機實時應用系統(tǒng)中,實現(xiàn)定時和對外部事件計數(shù)的功能。

定時:對周期已知的脈沖信號計數(shù)

計數(shù):對外部事件計數(shù),對周期未知的外來脈沖信號計數(shù)

采用軟件占用CPU的時間,降低了CPU的使用效率;

采用專門的硬件電路,參數(shù)調(diào)節(jié)不便;

采用可編程的定時器/計數(shù)器是較好的方法;

可以方便靈活地修改定時或計數(shù)的參數(shù)或方式;

與CPU并行工作,大大提高了CPU的工作效率

5.2MCS-51串行口5.2.1串行口概述

8051的通訊:即單片機與外界進行信息交換。通訊方式:

并行通訊:數(shù)據(jù)的各位同時發(fā)送或接受

串行通訊:數(shù)據(jù)一位一位順序發(fā)送或接受

串行口通訊方式

單工通訊:通訊接口只能發(fā)送或接受的單向通訊方式

半雙工通訊:通訊接口既可發(fā)送又可接受,但不能同 時進行

全雙工通訊:通訊接口能同時發(fā)送接受的通訊方式異步傳送方式與同步傳送

異步通訊:利用起始位表示字符的開始,用停止位 表示字符結(jié)束D0D1D2D3D4D5D6D7D010P0起始位數(shù)據(jù)位D0~D7校驗位結(jié)束位第n個字符(幀)2.

同步通訊:在異步通訊中,每個字符要用起始位和停止位作為字符開始和結(jié)束的標志,占用了時間;所以在數(shù)據(jù)塊傳遞時,為了提高速度,常去掉這些標志,采用同步傳送。由于數(shù)據(jù)塊傳遞開始要用同步字符來指示,同時要求由時鐘來實現(xiàn)發(fā)送端與接收端之間的同步,故硬件較復雜。串行通信的數(shù)據(jù)傳送率

傳送率:數(shù)據(jù)傳送速度

波特率(baudrate):異步通信中數(shù)據(jù)傳輸速率的單 位,其含義每秒傳送多少位二進制數(shù)。例:數(shù)據(jù)傳送的速率為120個字符每秒,每個字符有1個起始位、8個數(shù)據(jù)位和一個停止位組成,則其傳送波特率為:

每一位的傳送時間為波特率的倒數(shù):5.2.2MCS-51串行口結(jié)構(gòu)發(fā)送控制器發(fā)送SBUF(99H)接受SBUF(99H)門接受控制器+串行口中斷串行控制寄存器(98H)輸入移位寄存器定時器T1內(nèi)部總線TIRITXD(P3.1)RXD(P3.0)888物理空間上各自獨立的發(fā)送寄存器和接收寄存器,有相同名字和地址空間,但不會出現(xiàn)沖突,因為發(fā)送寄存器只寫不讀,接受寄存器只讀不寫。串行口控制寄存器SCOND7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRISM0SM1:串行口方式選擇位SM0SM1方式

功能說明0008位同步移位寄存器方式(用于I/O擴展)01110位UART,波特率可變(T1溢出率/n)10211位UART,波特率fosc/64或fosc/3211311位UART,波特率可變(T1溢出率/n)SM2:允許方式2和方式3多機通訊位REN:接收允許控制位。由軟件置位以允許接收,又由軟件清 0來禁止接收。TB8:

是要發(fā)送數(shù)據(jù)的第9位。在方式2或方式3中,要發(fā)送的第 9位數(shù)據(jù),根據(jù)需要由軟件置1或清0。例如,可約定作為 奇偶校驗位,或在多機通訊中作為區(qū)別地址幀或數(shù)據(jù)幀 的標志位。RB8:接收到的數(shù)據(jù)的第9位。在方式0中不使用RB8。在方式1 中,若(SM2)=0,RB8為接收到的停止位。在方式2或 方,式3中,RB8為接收到的第9位數(shù)據(jù)。TI:發(fā)送中斷標志。在方式0中,第8位發(fā)送結(jié)束時,由硬件 置位。在其它方式的發(fā)送停止位前,由硬件置位。TI置 位既表示一幀信息發(fā)送結(jié)束,同時也是申請中斷,也可 用軟件查詢的方法獲得數(shù)據(jù)已發(fā)送完畢的信息,或用中 斷的方式來發(fā)送下一個數(shù)據(jù)。TI必須用軟件清0。RI:

接收中斷標志位。在方式0,當接收完第8位數(shù)據(jù)后,由 硬件置位。在其它方式中,在接收到停止位的中間時 刻由硬件置位(例外情況見于SM2的說明)。RI置位 表示一幀數(shù)據(jù)接收完畢,可用查詢的方法獲知或者用 中斷的方法獲知。RI也必須用軟件清0。特殊功能寄存器PCON:是為了在CHMOS的80C51單片機上實現(xiàn)電源控制而附加的。其中最高位是SMOD。5.2.3串行口工作方式一、方式0

方式0為移位寄存器輸入/輸出方式??赏饨右莆患拇嫫饕詳U展I/O口,也可以外接同步輸入/輸出設(shè)備。8位串行數(shù)據(jù)者是從RXD(P3.0)輸入或輸出,TXD(P3.1)用來輸出同步脈沖。

1、方式0發(fā)送串行數(shù)據(jù)從RXD引腳輸出,TXD引腳輸出移位脈沖。CPU將數(shù)據(jù)寫入發(fā)送寄存器時,立即啟動發(fā)送,將8位數(shù)據(jù)以fosc/12的固定波特率從RXD輸出,低位在前,高位在后。發(fā)送完一幀數(shù)據(jù)后,發(fā)送中斷標志TI由硬件置位。2、方式0接收當串行口以方式0接收時,先置位允許接收控制位REN。此時,RXD為串行數(shù)據(jù)輸入端,TXD仍為同步脈沖移位輸出端。當(RI)=0和(REN)=1同時滿足時,開始接收。當接收到第8位數(shù)據(jù)時,將數(shù)據(jù)移入接收寄存器,并由硬件置位RI。二、方式1

方式1為波特率可變的10位異步通訊接口方式。發(fā)送或接收一幀信息,包括1個起始位0,8個數(shù)據(jù)位和1個停止位1。1.

方式1發(fā)送

當CPU執(zhí)行一條指令將數(shù)據(jù)寫入發(fā)送緩沖SBUF時,就啟動發(fā)送。串行數(shù)據(jù)從TXD引腳輸出,發(fā)送完一幀數(shù)據(jù)后,就由硬件置位TI。2.

方式1接受

在(REN)=1時,串行口采樣RXD引腳,當采樣到1至0的跳變時,確認是開始位0,就開始接收一幀數(shù)據(jù)。只有當(RI)=0且停止位為1或者(SM2)=0時,停止位才進入RB8,8位數(shù)據(jù)才能進入接收寄存器,并由硬件置位中斷標志RI;否則信息丟失。所以在方式1接收時,應先用軟件清零RI和SM2標志。

在串行通訊中,收發(fā)雙方的數(shù)據(jù)傳送率(波特率)要有一定的約定。在8051串行口的四種工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可變的,由定時器T1的溢出率控制。

方式0和方式2的波特率:

在方式0,每個及其周期發(fā)送或接受一位數(shù)據(jù),波特率的數(shù)值固定為時鐘頻率(fosc)的1/12,且不受SMOD的影響。在方式2中,波特率由PCON中的選擇位SMOD來決定,當SMOD=0時,波特率為1/64fosc

當SMOD=1時,波特率為1/32fosc,

方式1和方式3的波特率:

其中,T1的溢出率取決于計數(shù)速率和定時器的預制值。T1計數(shù)率取決于它工作在定時器狀態(tài)還是計數(shù)器狀態(tài),當工作于定時器狀態(tài)時,T1計數(shù)脈沖為fosc/12;當工作于計數(shù)器狀態(tài)時,T1計數(shù)脈沖取決于外部輸入時鐘頻率。

[例5_3]

應用串行口方式0輸出,在串行口外接移位寄存器,構(gòu)成顯示器接口.如圖所示,三片(理論上可以為n片,為舉例方便而用三片)74LS164串接成24位并行輸出移位寄存器,每片74LS164接一個共陽極8段LED顯示器,構(gòu)成三維數(shù)據(jù)顯示,這里P1.0作串行輸出選擇信號(只有P1.0為高時,串行同步信號TXD才能輸出),這種顯示器稱為靜態(tài)顯示,CPU不必為顯示服務而頻繁執(zhí)行掃描任務.

設(shè)顯示緩沖區(qū)設(shè)在DISBUF開始的區(qū)域中.解:1.確定工作方式

(1)送方式控制字

(SCON)=00000000B=00H;串行口以方式0輸出5.2.4串行口應用P1.0RXDTXD8051e74LS16434g5f610d11c12b13aLED0e74LS16434g5f610d11c12b13aLED1e74LS16434g5f610d11c12b13aLED2&8989895V5V1.21.21.2DISPLY:MOVSCON,#00H ;選擇串行口為方式0發(fā)送

MOVR7,#3H ;字節(jié)計數(shù)

MOVR0,DISBUF ;R0指向顯示緩沖區(qū)

SETBP1.0 ;選通TXD同步移位時鐘L1:MOVA,@R0;取要顯示的數(shù)

MOVSBUF,A;開始發(fā)送

JNBTI,$;等待一幀發(fā)送完

CLRTI;清發(fā)送中斷標志

INCR0;修改顯示緩沖區(qū)指針

DJNZR7,L1;三個LED實現(xiàn)完了否?CLRP1.0;關(guān)TXDRET;返回DISBUF:DB11H,D7H,18H,D8H

程序清單:

第5章MCS-51的中斷系統(tǒng)實時測控,單片機能及時地響應和處理單片機外部事件或內(nèi)部事件所提出的中斷請求。5.1中斷的概念CPU正在執(zhí)行程序時,單片機外部或內(nèi)部發(fā)生的某一事件,請求CPU迅速去處理。CPU暫時中止當前的工作,轉(zhuǎn)到中斷服務處理程序處理所發(fā)生的事件。處理完該事件后,再回到原來被中止的地方,繼續(xù)原來的工作,這稱為中斷。CPU處理事件的過程,稱為CPU的中斷響應過程。圖5-1所示。對事件的整個處理過程,稱為中斷處理(或中斷服務)。能夠?qū)崿F(xiàn)中斷處理功能的部件稱為中斷系統(tǒng);產(chǎn)生中斷的請求源稱為中斷請求源。中斷源向CPU提出的處理請求,稱為中斷請求(或中斷申請)。

進入中斷→保護現(xiàn)場→中斷處理→恢復現(xiàn)場→中斷返回中斷方式優(yōu)點:大大地提高了CPU的工作效率。5.2MCS-51中斷系統(tǒng)的結(jié)構(gòu)有5個中斷請求源,兩個中斷優(yōu)先級,可兩級嵌套。中斷系統(tǒng)結(jié)構(gòu)示意圖如下圖所示。

5.3中斷請求源五個中斷請求源:(1)INT0*—外部中斷請求0,由引腳INT0*輸入,中斷請求標志為IE0。(2)INT1*—外部中斷請求1,由引腳INT1*輸入,中斷請求標志為IE1。(3)定時器/計數(shù)器T0溢出中斷請求,中斷請求標志為TF0。(4)定時器/計數(shù)器T1溢出中斷請求,中斷請求標志為TF1。(5)串行口中斷請求,中斷請求標志為TI或RI。由特殊功能寄存器TCON和SCON的相應位鎖存。TCON為定時器/計數(shù)器的控制寄存器,字節(jié)地址為88H。包含:(1)T0和T1的溢出中斷請求標志位TF1和TF0(2)外部中斷請求標志位IE1與IE0。格式如下所示:各標志位的功能:(1)IT0—選擇外部中斷請求0為跳沿觸發(fā)方式還是電平觸發(fā)方式:IT0=0,為電平觸發(fā)方式。

IT0=1,為邊沿觸發(fā)方式??捎绍浖谩?”或清“0”。(2)IE0—外部中斷請求0的中斷請求標志位。IE0=0,無中斷請求。IE0=1,外部中斷0有中斷請求。當CPU響應該中斷,轉(zhuǎn)向中斷服務程序時,由硬件清“0”IE0。(3)IT1—外部中斷請求1為邊沿觸發(fā)方式還是電平觸發(fā)方式,意義與IT0類似。(4)IE1—外部中斷請求1的中斷請求標志位,意義與IE0類似。(5)TF0—T0溢出中斷請求標志位。T0計數(shù)后,溢出時,由硬件置“1”TF0,向CPU申請中斷,CPU響應TF0中斷時,硬件自動清“0”TF0,TF0也可由軟件清0。(6)TF1—T1的溢出中斷請求標志位,功能和TF0類似。TR1、TR02個位與中斷無關(guān)。

當MCS-51復位后,TCON被清0,則CPU無中斷。SCON為串行口控制寄存器,字節(jié)地址為98H。串行口的發(fā)送中斷和接收中斷的中斷請求標志TI和RI,格式如下:各標志位的功能:(1)TI—發(fā)送中斷請求標志位。串口每發(fā)送完一幀串行數(shù)據(jù)后,硬件自動置“1”TI。必須在中斷服務程序中用軟件對TI標志清“0”。

(2)RI—接收中斷請求標志位。串口接收完一個數(shù)據(jù)幀,硬件自動置“1”RI標志。必須在中斷服務程序中用軟件對RI標志清“0”。5.4中斷控制5.4.1中斷允許寄存器IECPU對中斷源的開放或屏蔽,由片內(nèi)的中斷允許寄存器IE控制。字節(jié)地址為A8H,可位尋址。格式如下:IE對中斷的開放和關(guān)閉為兩級控制

總的開關(guān)中斷控制位EA(IE.7位):EA=0,所有中斷請求被屏蔽。EA=1,CPU開放中斷,但五個中斷源的中斷請求是否允許,還要由IE中的5個中斷請求允許控制位決定。IE中各位的功能如下:(1)EA:中斷允許總控制位

0:CPU屏蔽所有的中斷請求(CPU關(guān)中斷);

1:CPU開放所有中斷(CPU開中斷)。(2)ES:串行口中斷允許位

0:禁止串行口中斷;

1:允許串行口中斷。

(3)ET1:定時器/計數(shù)器T1的溢出中斷允許位

0:禁止T1溢出中斷;

1:允許T1溢出中斷。(4)EX1:外部中斷1中斷允許位

0:禁止外部中斷1中斷;

1:允許外部中斷1中斷。(5)ET0:定時器/計數(shù)器T0的溢出中斷允許位

0:禁止T0溢出中斷;

1:允許T0溢出中斷。(6)EX0:外部中斷0中斷允許位。

0:禁止外部中斷0中斷;

1:允許外部中斷0中斷。MCS-51復位后,IE清0,所有中斷請求被禁止。若使某一個中斷源被允許中斷,除了IE相應的位的被置“1”,還必須使EA位=1。改變IE的內(nèi)容,可由位操作指令來實現(xiàn),即:

SETBbit;CLRbit。例5-1若允許片內(nèi)2個定時器/計數(shù)器中斷,禁止其它中斷源的中斷請求。編寫設(shè)置IE的相應程序段(1)用位操作指令來編寫如下程序段:

CLRES ;禁止串行口中斷 CLREX1 ;禁止外部中斷1中斷 CLREX0 ;禁止外部中斷0中斷

SETBET0;允許定時器/計數(shù)器T0中斷SETBET1;允許定時器/計數(shù)器T1中斷SETBEA;CPU開中斷(2)用字節(jié)操作指令來編寫:

MOVIE,#8AH或者用:

MOV0A8H,#8AH;A8H為IE寄存器字節(jié)地址5.4.2中斷優(yōu)先級寄存器IP兩個中斷優(yōu)先級,可實現(xiàn)兩級中斷嵌套。如圖5-6示??蓺w納為下面兩條基本規(guī)則:(1)低優(yōu)先級可被高優(yōu)先級中斷,反之則不能。(2)同級中斷不會被它的同級中斷源所中斷。若CPU正在執(zhí)行高優(yōu)先級的中斷,則不能被任何中斷源所中斷。中斷優(yōu)先級寄存器IP,其字節(jié)地址為B8H。IP各個位的含義:(1)PS——串行口中斷優(yōu)先級控制位

1:高優(yōu)先級中斷;

0:低優(yōu)先級中斷。(2)PT1——定時器T1中斷優(yōu)先級控制位

1:高優(yōu)先級中斷;

0:低優(yōu)先級中斷。(3)PX1——外部中斷1中斷優(yōu)先級控制位

1:高優(yōu)先級中斷;

0:低優(yōu)先級中斷。(4)PT0——定時器T0中斷優(yōu)先級控制位

1:高優(yōu)先級中斷;

0:低優(yōu)先級中斷。(5)PX0——外部中斷0中斷優(yōu)先級控制位

1:高優(yōu)先級中斷;

0:低優(yōu)先級中斷。

由軟件可改變各中斷源的中斷優(yōu)先級。MCS-51的中斷系統(tǒng)有兩個不可尋址的“優(yōu)先級激活觸發(fā)器”:一個用來指示某高優(yōu)先級的中斷正在執(zhí)行,所有后來的中斷均被阻止。另一個用來指示某低優(yōu)先級的中斷正在執(zhí)行,所有同級中斷都被阻止,但不阻斷高優(yōu)先級的中斷請求。在同時收到幾個同一優(yōu)先級的中斷請求時,優(yōu)先響應哪一個中斷,取決于內(nèi)部的查詢順序。查詢順序如下:

中斷源中斷級別

外部中斷0 最高 T0溢出中斷 外部中斷1 T1溢出中斷 串行口中斷 最低例5-2

設(shè)置IP寄存器的初始值,使2個外中斷請求為高優(yōu)先級,其它中斷請求為低優(yōu)先級。(1)用位操作指令

SETBPX0;2個外中斷為高優(yōu)先級 SETBPX1 CLRPS;串口為低優(yōu)先級中斷

CLRPT0;2個定時器/計數(shù)器低優(yōu)先級中斷 CLRPT1(2)用字節(jié)操作指令

MOVIP,#05H 或: MOV0B8H,#05H;B8H為IP寄存器的字節(jié)地址5.5響應中斷請求的條件一個中斷請求被響應,需滿足以下必要條件:(1)IE寄存器中的中斷總允許位EA=1。(2)該中斷源發(fā)出中斷請求,即該中斷源對應的中斷請求標志為“1”。(3)該中斷源的中斷允許位=1,即該中斷沒有被屏蔽。(4)無同級或更高級中斷正在被服務。中斷響應的主要過程:首先由硬件自動生成一條長調(diào)用指令:

LCALLaddr16接著就由CPU執(zhí)行該指令,將PC的內(nèi)容壓入堆棧以保護斷點,再將中斷入口地址裝入PC。各中斷源服務程序的入口地址是固定的,如下所示:

中斷源 入口地址

外部中斷0 0003H定時器/計數(shù)器T0 000BH 外部中斷1 0013H

定時器/計數(shù)器T1 001BH 串行口中斷 0023H中斷響應是有條件的,遇到下列三種情況之一時,中斷響應被封鎖:

(1)CPU正在處理同級的或更高優(yōu)先級的中斷。(2)所查詢的機器周期不是所當前正在執(zhí)行指令的最后一個機器周期。只有在當前指令執(zhí)行完畢后,才能進行中斷響應。(3)正在執(zhí)行的指令是RETI或是訪問IE或IP的指令。需要再去執(zhí)行完一條指令,才能響應新的中斷請求。如果存在上述三種情況之一,CPU將丟棄中斷查詢結(jié)果,不能對中斷進行響應。5.6中斷請求的撤消1.定時器/計數(shù)器中斷請求的撤消

中斷請求被響應后。硬件會自動清TF0或TF1。2.外部中斷請求的撤消

(1)跳沿方式外部中斷請求的撤消是自動撤消的。(2)電平方式外部中斷請求的撤消:除了標志位清“0”之外,還需在中斷響應后把中斷請求信號引腳從低電平強制改變?yōu)楦唠娖健?.串行口中斷請求的撤消響應串行口的中斷后,CPU無法知道是接收中斷還是發(fā)送中斷,還需測試這兩個中斷標志位的狀態(tài),以判定是接收操作還是發(fā)送操作,然后才能清除。所以串行口中斷請求的撤消只能用軟件清除

CLRTI;清TI標志位 CLRRI;清RI標志位5.7中斷服務程序的設(shè)計一、中斷服務程序設(shè)計的任務

基本任務:

(1)設(shè)置中斷允許控制寄存器IE。(2)設(shè)置中斷優(yōu)先級寄存器IP。(3)對外中斷源,是采用電平觸發(fā)還是跳沿觸發(fā)。(4)編寫中斷服務程序,處理中斷請求。前2條一般放在主程序的初始化程序段中。例5-3

假設(shè)允許外部中斷0中斷,并設(shè)定它為高級中斷,其它中斷源為低級中斷,采用跳沿觸發(fā)方式。在主程序中編寫如下程序段:

SETBEA;CPU開中斷SETBEx0;允許外中斷0產(chǎn)生中斷SETBPX0;外中斷0為高級中斷SETBIT0;外中斷0為跳沿觸發(fā)方式

二、采用中斷時的主程序結(jié)構(gòu)常用的主程序結(jié)構(gòu)如下:

ORG0000H LJMPMAIN

ORG中斷入口地址 LJM

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論