第6章 輸入輸出和中斷系統_第1頁
第6章 輸入輸出和中斷系統_第2頁
第6章 輸入輸出和中斷系統_第3頁
第6章 輸入輸出和中斷系統_第4頁
第6章 輸入輸出和中斷系統_第5頁
已閱讀5頁,還剩42頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第6章輸入/輸出和中斷系統

單片機原理及應用16.1微機的輸入/輸出方式CPU與外部設備交換信息通常有以下幾種方式:(1)程序控制傳送方式,又分為無條件傳送方式和查詢傳送方式(2)中斷傳送方式(3)直接存儲器存取(DMA)方式

無條件傳送流程圖查詢傳送流程圖2◆無條件傳送的缺點必須確認外設是準備好的◆查詢傳送的缺點

CPU在查詢過程中什么都不能做,CPU的工作效率低下◆解決的方法采用中斷方式◆中斷方式與以上兩種方式的根本區別

CPU由數據傳送的主動方變為被動方外設需要傳送數據,向CPU發出中斷請求,CPU響應后,轉去為外設服務(傳送數據),服務后CPU繼續執行原來的程序3◆應用程序的一般形式從本章開始,涉及到單片機的應用(設計單片機的應用電路、編制單片機的應用程序)許多單片機的初學者都普遍存在這樣的問題:對自己要設計的作品的功能很清楚,但不知道如何安排各個部分程序,也就是不太會設計程序流程圖4◆應用程序的一般形式(以你們為例)初始化主程序無限循環執行的幾件事(可能包含幾個子程序)其中如果有緊急事情的話,還需要有中斷服務程序56.2中斷系統概念中斷的定義:

當中央處理器CPU正在處理某事件時,外界發生了更為緊急的請求,要求CPU暫停當前的工作,轉而去處理這個緊急事件,處理完畢后,再回到原來被中斷的地方,繼續原來的工作,這樣的過程稱為中斷。主程序斷點正在執行中的某條指令中斷服務程序RETI響應中斷請求返回主程序中斷響應中斷返回中斷服務中斷過程流程6◆當CPU正在處理一個中斷源請求時,發生了另一個優先級比它高的中斷源請求。如果CPU能夠暫停對原來的中斷源的處理程序,轉而去處理優先級更高的中斷源請求,處理完以后,再回到原來的低級中斷處理程序,這樣的過程稱為中斷嵌套。◆具有這種功能的中斷系統稱為多級中斷系統;沒有中斷嵌套功能的則稱為單級中斷系統。主程序響應低級別中斷請求響應高級別中斷請求二級中斷嵌套示意76.3MCS-51中斷系統結構80C51單片機有5個中斷源,具有兩個中斷優先級,可以實現二級中斷嵌套5個中斷源的排列順序由中斷優先級控制寄存器IP和順序查詢邏輯電路(圖6-4中的自然優先級排隊電路)共同決定5個中斷源對應5個固定的中斷入口地址(中斷矢量,見p.146)與中斷系統有關的特殊功能寄存器(4個):

定時器控制寄存器TCON、串口控制寄存器SCON、中斷允許寄存器IE、中斷優先級控制寄存器IP5個中斷源:外部中斷:INT0和INT1

定時器/計數器溢出中斷:定時器/計數器T0和T1

串口中斷:TX或RX(發送或接收中斷)89

6.3.1中斷源與中斷請求標志

MCS-51單片機設有5個中斷源,中斷請求標志分別是:2個外部中斷請求標志:IE0(INT0)、IE1(INT1)2個內部定時器/計數器溢出中斷請求標志:TF0(定時器/計數器T0)、TF1(定時器/計數器T1)1個內部串行口中斷請求標志:TI或RI

這些中斷請求標志分別由特殊功能寄存器TCON和SCON的相應位鎖存10定時器/計數器控制寄存器(TCON)TF1TF0IE1IT1IE0IT088HT1溢出中斷請求標志T0溢出中斷請求標志外中斷0觸發方式0:低電平觸發1:邊沿觸發外中斷0中斷請求標志0:無中斷請求1:有中斷請求外中斷1觸發方式外中斷1中斷請求標志CPU相應中斷后,將TF1自動清0若查詢方式,則需軟件清011串口控制寄存器(SCON)TIRI98H串口發送中斷請求標志每發送1幀數據后硬件置1軟件清0串口接收中斷請求標志每接收1幀數據后硬件置1軟件清0注:CPU響應中斷后,并不清除TI或RI,所以必須由軟件清0126.3.2MCS-51的中斷控制中斷的開放和屏蔽中斷 中斷允許寄存器IE的作用,是控制所有中斷源的開放或禁止,以及每個中斷源是否被允許。寄存器IE的位格式如下:中斷允許寄存器(IE)EA××ESET1EX1ET0EX0A8H總允許位串口外中斷0定時器T0外中斷1定時器T11:允許中斷0:禁止中斷13中斷優先級別的設定MCS-51系列單片機具有兩個中斷優先級。對于所有的中斷源,均可由軟件設置為高優先級中斷或低優先級中斷每個中斷源的中斷優先級都可以通過程序來設定,由中斷優先級寄存器IP統一管理中斷優先級寄存器(IP)×××PSPT1PX1PT0PX0B8H串口外中斷0定時器T0外中斷1定時器T10:低優先級1:高優先級14例如CPU開中斷可由以下兩條指令來實現:

SETBEA;EA置1或ORLIE,#80H;按位“或”,EA置1CPU關中斷可由以下兩條指令來實現:

CLREA;EA清0或ANLIE,#7FH;按位“與”,EA清0

又如設置外部中斷源0為高優先級,外部中斷源1為低優先級,可由下面指令來實現:

SETBPX0;PX0置1CLRPX1;PX1清015

優先級結構在工作過程中中斷系統對各中斷源的處理遵循以下基本原則:低優先級中斷可以被高優先級中斷所中斷,反之不能。中斷源的自然優先級中斷源同級自然優先級外部中斷0最高級定時器0中斷↓外部中斷1┆

定時器1中斷↓串行口中斷最低級16例:設80C51的片外中斷為高優先級,片內中斷為低優先級,試設置IP相應值。解:(a)用字節操作指令

MOVIP,#05H

(b)用位操作指令

SETBPX0SETBPX1CLRPSCLRPT0CLRPT1176.3.3中斷處理過程中斷處理過程可分為三個階段,即中斷響應、中斷處理和中斷返回。

(1)中斷響應◆響應條件有中斷源發出中斷請求中斷總允許位EA=1,即CPU開中斷申請中斷的中斷源的中斷允許位為1,即中斷沒有被屏蔽無同級或更高級中斷正在被服務當前的指令周期已經結束若現行指令為RETI或者是訪問IE或IP指令時,該指令以及緊接著的另一條指令已執行完18◆

中斷響應操作過程

MCS-51的CPU在第1個機器周期按優先級順序查詢中斷標志,如查詢到某個中斷標志為1,將在接下來的2個機器周期按優先級進行中斷處理:中斷系統首先將斷點地址進棧保護,并通過硬件自動將相應的中斷矢量地址裝入PC,以便進入相應的中斷服務程序。◆

中斷響應時間

在一般情況下,MCS-51響應中斷的時間至少為3個機器周期。中斷源中斷矢量地址中斷源中斷矢量地址外中斷00003H定時器T0000BH外中斷10013H定時器T1001BH串口0023H19(2)中斷處理◆各中斷源的入口矢量地址之間只相隔8個單元,一般的中斷服務程序是容納不下的,因而最常用的方法是在中斷入口地址單元處存放一條無條件轉移指令,轉至存儲器其他的任何空間。◆若在執行當前中斷程序時禁止更高優先級中斷,應用軟件關閉CPU中斷(屏蔽該高級中斷),在中斷返回前再開放中斷。◆在保護現場和恢復現場時,為了不使現場信息受到破壞或造成混亂,一般應關閉CPU中斷,使CPU暫不響應新的中斷請求(用于在應用中使用了兩個以上的中斷)0003H(INT0的中斷矢量):LJMPINT_0(INT0程序入口地址)中斷服務程序:保護現場

…………中斷服務恢復現場

RETI20(3)中斷返回在中斷服務程序中,最后一條指令必須為中斷返回指令RETI

返回到程序斷點處繼續執行6.4中斷請求的撤除6.4.1.定時器/計數器中斷請求的撤除 其中斷請求是自動撤除的,無需采取其他措施。6.4.2.串行口中斷請求的撤除通過如下指令將RI和TI撤除:

CLRRI;撤除接收中斷

CLRTI;撤除發送中斷216.4.3.外部中斷請求的撤除(電平觸發)

INSVR:ANLP1,#0FEHORLP1,#01H┇RETIEND22用單穩態觸發器構成的外部中斷請求電路(電平觸發)單穩態觸發器中斷請求信號由于電平觸發的外部中斷請求需人為撤消,所以,外部中斷請求一般設置為邊沿觸發236.5中斷系統的初始化及應用6.5.1.中斷系統的初始化(1)開放某中斷源的中斷請求

(2)設定所用中斷的中斷優先級*(3)若為外部中斷,則應規定中斷觸發方式(低電平或邊沿觸發)(4)CPU開中斷24例6-2:寫出INT1為低電平觸發、高優先級的中斷系統初始化程序。解:(1)采用位操作指令

SETBEX1

;外中斷1開中斷

SETBPX1;令其為高優先級

CLRIT1;令其為電平觸發

SETBEA;CPU開總中斷

(2)采用字節型指令

MOVIE,#84H

;開中斷

ORLIP,#04H;高優先級

ANLTCON,#0FBH;電平觸發256.5.2.中斷系統的應用(中斷處理)

ORGADDRESS;ADDRESS為中斷矢量(5個中斷矢量之一)

LJMPINTVS;INTVS為中斷服務程序入口MAIN: ……..┇

LJMPMAIN

INTVS:CLREA;關中斷

PUSHPSW;保護現場

PUSHACC┇SETBEA;開中斷,允許CPU響應高級中斷┇中斷服務┇

CLREA;關中斷

POPACC;恢復現場

POPPSW┇SETBEA;開中斷

RETI;中斷返回若系統中只使用了一個中斷源,則CPU開、關中斷可以略去26

中斷源及其對應的中斷矢量(表6-1p.146)外部中斷0(INT0):0003H

定時器0中斷:000BH

外部中斷1(INT1):0013H

定時器1中斷:001BH

串口中斷:0023H

中斷矢量的間隔為8個單元,所以應在中斷矢量地址處安排一條無條件轉移指令LJMP中斷服務程序標號(或AJMP)6.5.3中斷應用舉例例6-3P1.7~P1.4為輸入口,P1.3~P1.0為輸出口,反映輸入口開關的狀態,輸入為高電平時,相應的LED亮。每中斷一次,對外部狀態檢測一次,外部中斷采用邊沿觸發方式。(R-S觸發器作用:消除開關抖動

1-S2-R)27流程圖28;機器碼必須從0000H開始存放;轉到主程序;INT0的中斷矢量;轉到INT0中斷服務程序;定義主程序;允許INT0中斷;設為邊沿觸發;CPU開中斷;CPU等中斷;定義中斷服務程序;設P1口高4位輸入和低4位輸出初態;將狀態送到P1口;讀開關狀態;將高4位狀態交換到低4位;輸出到低4位;中斷返回 ORG0000HLJMPMAIN

ORG0003H

LJMPINSER

ORG0050HMAIN:SETBEX0

SETBIT0

SETBEAHERE:SJMPHERE

ORG0200H

INSER:MOVA,#0F0HMOVP1,A

MOVA,P1

SWAPA

MOVP1,A

RETIEND

初始化296.6MCS-51外部中斷擴展方法

MCS-51單片機有兩個外部中斷請求輸入端

INT0和INT1。在實際應用中,若外部中斷源有兩個以上時,就需要進行外部中斷擴展。擴展外部中斷源的方法有兩種:用定時器擴展外部中斷源(定時器章節介紹)I/O口查詢方式擴展外部中斷源306.6.2.硬件申請軟件查詢擴展中斷源注:反相器一定是OC門輸出,否則輸出短路!用4個反相器構成的4輸入或非門31中斷服務程序是一個查詢程序32 ORG0003H LJMPINTRP ………INTRP:PUSHPSW PUSHACC JBP1.0,DV1 JBP1.1,DV2 JBP1.2,DV3 JBP1.3,DV4EXIT: POPACC POPPSW RETIDV1: ……..

裝置1中斷服務

AJMPEXITDV2: ……..

裝置2中斷服務

AJMPEXITDV3: ……..

裝置3中斷服務

AJMPEXITDV4: ……..

裝置4中斷服務

AJMPEXIT33例6-4利用中斷顯示系統故障正常時監測點為低電平故障時監測點為高電平系統工作正常時,4個監測點均為低電平,LED不亮某個部分出現故障時,相應的監測點為高電平,對應的LED點亮LED1LED2LED3LED434

ORG0000H

AJMPMAIN

;上電復位,轉向主程序

ORG0003H

;外部中斷0入口地址

AJMPINSER

;轉向中斷服務程序

ORG0050HMAIN:ANLP1,#55H;P1.0,P1.2,P1.4,P1.6為輸入;P1.1,P1.3,P1.5,P1.7輸出為0SETBEX0;允許外部中斷0中斷

SETBIT0;選擇邊沿觸發方式

SETBEA;CPU開中斷HERE:SJMPHERE

;等待中斷INSER:JNBP1.0,L1;查詢中斷源,P1.0=0,轉L1SETBP1.1;是P1.0引起的中斷,使相應的二極管亮L1:JNBP1.2,L2;繼續查詢

SETBP1.3L2:JNBP1.4,L3SETBP1.5L3:JNBP1.6,L4SETBP1.7L4:RETIEND

注意查詢的方法監測點低電平為正常P1.0、P1.2、P1.4、P1.6接監測點

設置堆棧35中斷應用:

1.LED控制S1S2用按鍵開關S1、S2控制LED閃亮與熄滅P1.0=0,LED亮P1.0=1,LED滅36流程圖延時子程序(略)控制熄滅控制閃亮37

LIANGBIT00H ORG0000H LJMPST ORG0003H LJMPINT_0

ORG0013H LJMPINT_1

ORG0050HST: SETBP1.0

SETBEX0

SETBIT0

SETBEX1

SETBIT1

SETBEA CLRLIANG

MOVSP,#60H;定義一個位標志,LIANG=1,LED閃亮;轉到主程序;轉到INT0服務,控制熄滅;轉到INT1服務,控制閃亮;定義主程序;外設初始化,LED熄滅;允許INT0中斷;INT0邊沿觸發;允許INT1中斷;INT1邊沿觸發;CPU開中斷;標志初始化;設置堆棧38MAIN: JNBLIANG,LED_MIE CLRP1.0 LCALLDELAY SETBP1.0 LCALLDELAY SJMPMAINLED_MIE:SETBP1.0 SJMPMAININT_0:CLRLIANG RETIINT_1:SETBLIANG RETI;亮標志≠1,轉LED滅;否則LED閃亮;LED熄滅;亮標志=0;中斷返回;亮標志=1;中斷返回CPLP1.0LCALLDELAY39DELAY: MOVR7,#250DL1: MOVR6,#250DL2: NOP;1機器周期(1uS)

NOP;1機器周期(1uS)

DJNZR6,DL2;2機器周期(2uS)

DJNZR7,DL1 RET;延時250mS END ;fosc=12MHz40中斷應用:

2.中斷控制流水燈循環方向用開關控制流水燈的循環方向采用中斷控制方式在中斷服務程序中設置循環方向標志41主程序流程圖中斷服務程序流程圖(有鍵按下進入)F_L為循環方向標志42 F_LBIT00H ORG0000H LJMPMAIN ORG0003H LJMPINT_0 ORG0050H;********主程序初始化********MAIN: SETBEX0 SETBIT0 SETBEA MOVSP,#60H MOVA,#0FEH SET

溫馨提示

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

評論

0/150

提交評論