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

下載本文檔

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

文檔簡介

1、6.1 中斷的基本概念6.2 MCS-51的中斷系統6.3 中斷的應用第第章章中中斷斷系系統統 本章內容本章內容Single Chip Microcomputer6.1 中斷的基本概念v日常生活中斷的例子v單片機中的中斷概念 日常中斷的例子日常中斷的例子返回 你正在專心看書,突然電話鈴響,于是你記下正在看書的頁數,去接電話,接完電話后再回來接著看書。6.1 中斷的基本概念接接電電話話看書看書主要任務主要任務繼續看書繼續看書電話鈴電話鈴響響記頁數記頁數 計算機中的中斷概念計算機中的中斷概念6.1 中斷的基本概念主程序主程序主程序主程序 主程序主程序保護斷點保護斷點中斷請中斷請求求中斷中斷服務服務

2、程序程序接接電電話話看書看書主要任務主要任務繼續看書繼續看書電話鈴電話鈴響響記頁數記頁數中斷:中斷:是指由于某種隨機事件的發生,計算機暫停是指由于某種隨機事件的發生,計算機暫?,F現 行程序的運行,轉去執行另一程序,以處理行程序的運行,轉去執行另一程序,以處理 發生的事件,處理完畢后又自動返回原來的發生的事件,處理完畢后又自動返回原來的 程序繼續運行。程序繼續運行。 計算機中的中斷概念計算機中的中斷概念6.1 中斷的基本概念中斷源:中斷源:能發出中斷請求信號的設備或某種事件。能發出中斷請求信號的設備或某種事件。主程序:主程序: CPU現行運行的程序?,F行運行的程序。中斷服務程序:中斷服務程序:處

3、理隨機事件的程序。處理隨機事件的程序。斷點:斷點:主程序被斷開的位置。主程序被斷開的位置。主程序主程序主程序主程序 主程序主程序 斷點斷點中斷請中斷請求求中斷中斷服務服務程序程序6.2 MCS-51中斷系統v中斷源中斷源v中斷標志中斷標志v中斷允許中斷允許v中斷優先級中斷優先級vMCS-51MCS-51中斷系統結構中斷系統結構v中斷寄存器中斷寄存器 MCS-51MCS-51的中斷系統的中斷系統中斷源中斷源8051單片機有5個個中斷請求源:單片機單片機INT0或 外部輸入中斷源INT0(P3.2)INT1或 外部輸入中斷源INT1(P3.3)T0 片內定時器T0的溢出T1 片內定時器T1的溢出串

4、行口 片內串行口發送或接收中斷源6.2 MCS-51中斷系統 MCS-51MCS-51的中斷系統的中斷系統中斷標志中斷標志INT0INT1T0T1串口IE0TF0IE1TF1TIRI中斷源中斷源中斷標志位中斷標志位 每一個中斷源都有相應的中斷標志位; 某一個中斷源申請中斷,相應中斷標志位置1。6.2 MCS-51中斷系統 MCS-51MCS-51的中斷系統的中斷系統中斷允許中斷允許CPU主程序INT0INT1T0T1串口IE0TF0IE1TF1TIRI中斷源中斷源中斷標志位中斷標志位 EA總中斷允許位,總中斷允許位,EA=1開放所有中斷,開放所有中斷,EA=0,禁止所有中斷;禁止所有中斷; 某

5、一個中斷源還有相應的中斷允許位,某一個中斷源還有相應的中斷允許位,1允許相應中斷源的中斷,允許相應中斷源的中斷,0禁禁止相應中斷源的中斷。止相應中斷源的中斷。中斷允許中斷允許ESET0EX0EX1ET1EA6.2 MCS-51中斷系統 MCS-51MCS-51的中斷系統的中斷系統中斷優先級中斷優先級CPU主程序INT0INT1T0T1串口IE0TF0IE1TF1TISI中斷源中斷源中斷標志位中斷標志位 單片機中有兩個中斷優先級,即高優先級中斷和低優先級中斷,前單片機中有兩個中斷優先級,即高優先級中斷和低優先級中斷,前者優先權高于后者(在程序中設置,相應位者優先權高于后者(在程序中設置,相應位=

6、1=1,為高優先級);,為高優先級); 同一優先級別的中斷源按照自然優先級順序確定優先級別(硬件同一優先級別的中斷源按照自然優先級順序確定優先級別(硬件形成,無法改變)。形成,無法改變)。中斷允許中斷允許ESET0EX0EX1ET1EA自然優先級自然優先級高低優先控制優先控制PSPT0PX0PX1PT16.2 MCS-51中斷系統 IE0TCONSCONINT0 IT0=0 IT0=1INT1 IT1=0 IT1=1TF0 IE1TF1T0T1TIRITXDRXDESET0EX0EX1ET1EA自然優先級自然優先級高級中斷請求高級中斷請求自然優先級自然優先級低級中斷請求低級中斷請求PX0PT0

7、PX1PT1PSIEIP MCS-51 MCS-51的中斷系統結構圖的中斷系統結構圖中斷標志位中斷源允許總允許中斷優先級6.2 MCS-51中斷系統CPU主程序TCON寄存器T0和T1控制寄存器 TF1 TF0 IE1 IT1 IE0 IT0TCONT1溢出中斷標志溢出中斷標志(TCON.7): T1啟動計數后,計滿溢出由硬件置位TF1=1,向CPU請求中斷,此標志一直保持到CPU響應中斷后,才由硬件自動清0。也可用軟件查詢該標志,并由軟件清0。TF0與TF1一致!765432106.2 MCS-51中斷系統 TR1 TR0 TF1 TF0 IE1 IT1 IE0 IT0TCON 88H外部中

8、斷外部中斷INT1中斷標志中斷標志位位(TCON.3) : IE11,外部中斷1向CPU申請中斷 外部中斷外部中斷INT1觸發方觸發方式控制位式控制位(TCON.2): IT1=0,電平觸發方式 IT1=1, 下降沿觸發方式76543210TCON寄存器T0和T1控制寄存器注意:該寄存器可以位尋址。6.2 MCS-51中斷系統 TR1 TR0返回 TI (SCON.1)串行發送中斷標志。 RI (SCON.0)串行接收中斷標志。 TI RISCON寄存器串行口控制寄存器SCON 98H76543210注意:該寄存器可以位尋址。6.2 MCS-51中斷系統IE寄存器中斷允許寄存器 IE A8H

9、EA ESET1EX1 ET0EX0例:允許定時器T0中斷: EA=1; ET0=1; 或 IE=82H76543210注意:該寄存器可以位尋址。6.2 MCS-51中斷系統 51單片機有兩個中斷優先級單片機有兩個中斷優先級高級和低級高級和低級 專用寄存器專用寄存器IP為中斷優先級寄存器,用戶可用軟件設定為中斷優先級寄存器,用戶可用軟件設定 相應位為相應位為1,對應的中斷源被設置為,對應的中斷源被設置為高優先級高優先級,相應位為,相應位為0,對應,對應的中斷源被設置為低優先級的中斷源被設置為低優先級 系統復位時,均為低優先級系統復位時,均為低優先級 該寄存器可以位尋址該寄存器可以位尋址 PSP

10、T1PX1PT0PX0IP寄存器中斷優先級寄存器 IP B8H 765432106.2 MCS-51中斷系統中斷處理過程 中斷處理過程包括中斷響應和中斷處理兩個階段。6.2 MCS-51中斷系統1.中斷響應中斷響應:中斷響應:指CPU對中斷源中斷請求的響應。CPU響應中斷的條件響應中斷的條件:(1)有中斷源發出中斷請求;(2)中斷總允許位EA置1;(3)申請中斷的中斷源允許位置1。INT0INT1T0T1串口中斷源中斷源 IE0TCONSCONTF0 IE1TF1TIRIESET0EX0EX1ET1EAIE中斷源允許總允許2.中斷處理過程:就是自動調用并執行中斷函數的過程。 C51中斷函數的定

11、義形式為: void 函數名( ) interrupt n 其中n為中斷類型號6.2 MCS-51中斷系統INT0:外部中斷0INT1:外部中斷1T0:定時器0T1:定時器0串行口01234中斷源中斷源中斷類型號中斷類型號n0000H0001H0002H(PC)中斷5中斷4中斷3中斷2中斷10003H000BH0013H001BH0023H002BH外部中斷0定時器0中斷外部中斷1定時器1中斷串行口中斷8位位0FFFH0FFEH程序程序存儲器資源分布存儲器資源分布中斷入口地址中斷請求的撤除中斷請求的撤除 CPU響應某中斷請求后,在中斷返回前,應該撤除該中斷請求,否則會引起另一次中斷。 定時器0

12、或1溢出:CPU在響應中斷后,硬件清除了有關的中斷請求標志TF0或TF1,即中斷請求是自動撤除的中斷請求是自動撤除的。 外部中斷:CPU在響應中斷后,也是用硬件自動清除用硬件自動清除有關的中斷請求標志IE0或IE1。 串行口中斷:CPU響應中斷后,沒有用硬件清除T1、R1,故這些中斷不能自動撤除,而要靠軟件來清除相應的標志要靠軟件來清除相應的標志。6.2 MCS-51中斷系統 IE0TCONSCONINT0 IT0=0 IT0=1INT1 IT1=0 IT1=1TF0 IE1TF1T0T1TIRITXDRXDESET0EX0EX1ET1EA自然優先級自然優先級高級中斷請求高級中斷請求自然優先級

13、自然優先級低級中斷請求低級中斷請求PX0PT0PX1PT1PSIEIP MCS-51 MCS-51的中斷系統結構圖的中斷系統結構圖中斷標志位中斷源允許總允許中斷優先級回顧:CPU主程序例例1 1 通過P1.0P1.7控制發光二極管,主程序實現發光二級管間隔1秒循環全亮全滅。利用外部中斷0,實現8個燈間隔1秒依次亮起一次。P1. 0P1. 1P1. 2P1. 3P1. 4P1. 5P1. 6P1. 7INT0+5V6.3 中斷系統的應用中斷系統的應用 程序如下程序如下:#include void delay1s () unsigned char i; TMOD=0 x10; for(i=0;i2

14、0;i+) TH1=0 x3c; TL1=0 xb0; TR1=1; while( !TF1 ); TF1=0; /外部中斷外部中斷0服務程序服務程序void int0( ) interrupt 0 unsigned char j; for(j=0;j8;j+) P1=(0 x01j); delay1s(); void main() EA=1; EX0=1; IT0=1; while(1) P1=0 x00; delay1s(); P1=0 xff; delay1s(); 例例1 1 通過P1.0P1.7控制發光二極管,主程序實現發光二級管間隔1秒循環全亮全滅。利用外部中斷0,實現8個燈間隔1

15、秒依次亮起一次。 硬件原理圖P1. 0P1. 1P1. 2P1. 3P1. 4P1. 5P1. 6P1. 7INT1+5V例例2 2 通過P1.0P1.7控制發光二極管,主程序實現實現8個燈間隔1秒依次亮起,循環顯示。利用外部中斷1,實現發光二級管間隔1秒全亮全滅一次。#include void delay1s () unsigned char i; TMOD=0 x10; for(i=0;i20;i+) TH1=0 x3c; TL1=0 xb0; TR1=1; while( !TF1 ); TF1=0; /外部中斷外部中斷1服務程序服務程序void int1( ) interrupt 2 P

16、1=0 x00; delay1s(); P1=0 xff; delay1s(); /主程序主程序void main() unsigned char j; EA=1; EX1=1; IT1=1; while(1) for(j=0;j8;j+) P1=(0 x01j); delay1s(); 程序設計程序設計: : 例例2 2 通過P1.0P1.7控制發光二極管,主程序實現實現8個燈間隔1秒依次亮起,循環顯示。利用外部中斷1,實現發光二級管間隔1秒全亮全滅一次。例例3 3 主程序實現發光二級管間隔1秒循環全亮全滅。利用外部中斷0,實現8個燈間隔1秒依次亮起,循環2次后返回;利用外部中斷1,實現8個

17、燈間隔1秒依次熄滅,循環2次后返回。#include void delay1s () unsigned char i; TMOD=0 x10; for(i=0;i20;i+) TH1=0 x3c; TL1=0 xb0; TR1=1; while( !TF1 ); TF1=0; /外部中斷外部中斷0服務程序服務程序void int0( ) interrupt 0 unsigned char i, j; for(i=0;i2;i+) for(j=0;j8;j+) P1=(0 x01j); delay1s(); /外部中斷外部中斷1服務程序服務程序void int1( ) interrupt 2 u

18、nsigned char i, j;for(i=0;i2;i+) for(j=0;j8;j+) P1=0 x01j; delay1s(); 例例3 3 主程序實現發光二級管間隔1秒循環全亮全滅。利用外部中斷0,實現8個燈間隔1秒依次亮起,循環3次后返回;利用外部中斷1,實現8個燈間隔1秒依次熄滅,循環3次后返回。/主程序主程序void main() EA=1; EX0=1; IT0=1; EX1=1; IT1=1; while(1) P1=0 x00; delay1s(); P1=0 xff; delay1s(); 練習練習 利用外部中斷利用外部中斷0 0向向CPUCPU申請中斷,中斷服務程序

19、實現將申請中斷,中斷服務程序實現將P1P1口口8 8個燈全亮。個燈全亮。#include /外部中斷外部中斷0服務程序服務程序void int0( ) interrupt 0 P1=0 x00; void main( ) EA=1; EX0=1; IT0=1; while(1) ; 外部中斷0,實現8個燈間隔1秒依次亮起。練習練習利用外部中斷1,實現8個燈間隔1秒依次熄滅。外部中斷0,實現8個燈間隔1秒依次亮起。#include void delay1s () unsigned char i; TMOD=0 x10; for(i=0;i20;i+) TH1=0 x3c; TL1=0 xb0;

20、TR1=1; while( !TF1 ); TF1=0; /外部中斷外部中斷0服務程序服務程序void int0( ) interrupt 0 unsigned char j; for(j=0;j8;j+) P1=(0 x01i); delay1s(); /主程序主程序void main() EA=1; EX0=1; IT0=1; while(1) ; 練習練習 利用外部中斷1,實現8個燈間隔1秒依次熄滅。#include void delay1s () unsigned char i; TMOD=0 x10; for(i=0;i20;i+) TH1=0 x3c; TL1=0 xb0; TR1=1; while( !TF1 ); TF1=0; /外部中斷外部中斷1服務程序服務程序void int1( ) interrupt 2 unsigned char j; for(j=0;j8;j+) P1=0 x01i; delay1s(); /主程序主程序void main() unsigned char j; EA=1; EX1=1; IT1=1; while(1) ; 練習練習 練習:練習: 通過P1

溫馨提示

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

評論

0/150

提交評論