《單片機的中斷系統》由會員分享,可在線閱讀,更多相關《單片機的中斷系統(23頁珍藏版)》請在裝配圖網上搜索。
1、微機原理及應用 第 4章 MCS-51單片機 的中斷系統 4.1 中斷的概念 中斷是指在 CPU正在處理某項事務的時候, 如果外界或內部發(fā)生了緊急事件,要求 CPU暫 停正在運行的工作轉而去處理這個緊急事件, 待處理完后再回到原來被中斷的地方,繼續(xù)原 來被打斷了的工作的過程。中斷是計算機中一 個很重要的概念,中斷技術的引入使計算機的 發(fā)展和應用都大大地推進了一步??梢哉f:沒 有中斷技術,就沒有目前計算機的廣泛應用。 中 斷 服 務 程 序 主 程 序 繼 續(xù) 主 程 序 低 級 中 斷 主 程 序 繼 續(xù) 主 程 序 高 級 中 斷 4.2 8051中斷系統結構及中斷控制 MCS-51系列單片
2、機有 5個中斷源和 其相應的控制寄存器。 1. 中斷源 產生中斷的請求源叫中斷源 。 MCS-51系列單片機的 5個中斷源 , 包括 2 個外部中斷源 和 3個內部中斷源 。 MCS-51系列單片機能提供 兩個中斷優(yōu)先 級 , 實現 兩級中斷嵌套 。 振蕩器和時序 OSC 程序存儲器 4KB ROM 數據存儲器 4KB RAM 64KB總線 擴展控制器 可編程 I/O 可編程全雙工 串行口 8051 CPU 2 16位 定時器 /計數器 外時鐘源 內中斷 外中斷 控制 并行口 串行通信 外部事件計數 1 MCS-51單片機總體構框圖 2個外部中斷源 是 外部中斷 0和外部中斷 1,相應的中斷請
3、求信 號輸入端是 INT0和 INT1。 3個內部中斷源 是 定時器 /計數器 0溢出中 斷, 定時器 /計數器 1溢 出中斷,串行口的發(fā) 送和接收中斷 (TI和 RI)。 外部中斷請求有兩種觸發(fā)方式: 電 平觸發(fā) 和 邊沿觸發(fā) 。 電平觸發(fā) 邊沿觸發(fā) 高 低 2. TCON寄存器 TCON是定時器 /計數器 0和 1( T0、 T1) 的控制寄存器 , 同時也用來 鎖存 T0、 T1的 溢出中斷申請標志 和 外部中斷請求 標志 。 TCON (88H) D7 D6 D5 D4 D3 D2 D1 D0 TF1 TF0 IE1 IT1 IE0 IT0 定時器 /計數器 1 定時器 /計數器 0
4、溢出中斷請求標 志 ,由硬件置位。 INT1、 INT0 請求標志, 由硬件置位。 INT1、 INT0觸發(fā)方式控制位, 由軟件置位或復位。 IT1=0時, INT1為電平觸發(fā), IT1=1為邊 沿觸發(fā); IT0同理 (對應 INT0)。 3. SCON寄存器 SCON為串行口控制寄存器 , 其中的 低 2位用作 串行口中斷請求 標志 。 4 . 在 MCS-51單片機中斷系統中,中斷的 允 許 或 禁止 是由片內的中斷允許寄存器 IE控制 的。 IE (A8H) D7 D6 D5 D4 D3 D2 D1 D0 EA ES ET1 EX1 ET0 EX0 CPU中斷允許標志位。 EA=0時,關
5、中斷; EA=1時,開中斷。 串口 中斷允許標志位。 EA=0時,關串口中斷; EA=1時,開串口中斷。 T1、 T0溢出中斷 允許標志位。 ET1=0時,關 T1中斷; ET1=1時,開 T1中斷。 ET0同理 (對應 T0)。 外部 中斷允許標志位。 EX1=0時,關 INT1中斷; EX1=1時,開 INT1中斷。 EX0同理 (對應 INT0)。 例:假設允許片內定時器 /計數器中斷,禁 止其他中斷,設置相應的 IE值。 MOV IE, #8AH 或 SETB ET0 SETB ET1 SETB EA 5 . MCS-51系列單片機的 中斷優(yōu)先級控制 是由 中斷優(yōu)先級寄存器 IP控制的
6、。 IP (B8H) D7 D6 D5 D4 D3 D2 D1 D0 PS PT1 PX1 PT0 PX0 串口中斷 T1中斷 外部中斷 1 T0中斷 外部中斷 0 優(yōu)先級可以用軟件進行設置,單片機復位 后, IP中的各位均被清 0。 例:設 8031的片外中斷為高優(yōu)先級,片內 中斷為低優(yōu)先級,設置 IP相應的值。 MOV IP, #05H 或 SETB PX0 SETB PX1 CLR PS CLR PT0 CLR PT1 MCS-51單片機中斷系統應遵循的原則: 1、低優(yōu)先級中斷可被高優(yōu)先級中斷請求所中斷,反之 則不能。 2、同級的中斷請求不能打斷已經執(zhí)行的同級中斷。 中斷源 自然優(yōu)先級
7、外部中斷 0 最高 定時器 /計數器 0 外部中斷 1 定時器 /計數器 1 串行口 最低 中斷響應條件: 必須要有中斷請求 中斷源的中斷允許位為 1(即 IE中的總允許位 EA 1,且 IE相應的中斷允許位為 1) 無同級或高級中斷正在服務 現行指令執(zhí)行完最后一個機器周期。 4.3 中斷響應過程 CPU在每個機器周期的 S5P2時刻采樣 各中斷源的中斷請求信號 , 并將它鎖存 在 TCON或 SCON中的相應位 。 在下一個 機器周期對采樣到的中斷請求標志進行 查詢 。 如果查詢到中斷請求標志 , 則按 優(yōu)先級高低進行中斷處理 , 中斷系統將 通過硬件自動將相應的中斷矢量地址裝 入 PC,
8、以便進入相應的中斷服務程序 。 4.4 中斷響應時間 在不同的情況下 CPU響應中斷的時間是不同 的 。 以外部中斷為例 , INT0和 INT1引腳的電平在 每個機器周期的 S5P2時刻經反相鎖存到 TCON 的 IE0和 IE1標志位 , CPU在下一個機器周期才 會查詢到新置入的 IE0和 IE1, 如果滿足響應條 件 , CPU響應中斷時要用兩個機器周期執(zhí)行一 條硬件長調用指令 “ LCALL”, 由硬件完成將中 斷矢量地址裝入程序指針 PC中 , 使程序轉入中 斷矢量入口 。 因此 , 從產生外部中斷到開始執(zhí) 行中斷程序至少需要三個完整的機器周期 。 4.5 中斷響應后中斷請求的撤除
9、 中斷源提出中斷申請 , 在 CPU響應此中斷請 求后 , 該中斷源之中斷請求在中斷返回之前應 當撤除 , 以免引起重復中斷 , 被再次響應 。 對于 邊沿觸發(fā)的外部中斷 , CPU在響應中斷 后由 硬件自動清除 相應的中斷請求標志 IE0和 IE1。 對于 電平觸發(fā)的外部中斷 , 必須 外加硬件 來 撤銷中斷請求 。 對于 定時器溢出中斷 , CPU在響應中斷后就 由 硬件消除 了相應的中斷請求標志 TF0、 TF1。 對于 串行口中斷 , CPU在響應中斷后并不自 動清除中斷請求標志 RI或 TI, 因此必須在 中斷 服務程序中 用 軟件 來 清除 。 中斷系統應用舉例: 外部中斷源的擴展
10、 INT0 裝置 1 裝置 2 裝置 3 裝置 4 8051 P1.4 P1.5 P1.6 P1.7 ORG 0003H LJMP INT0 INT0: PUSH PSW PUSH ACC JB P1.7, DV1 JB P1.6, DV2 JB P1.5, DV3 JB P1.4, DV4 GB: POP ACC POP PSW RETI DV1: AJMP GB DV2: AJMP GB DV3: AJMP GB DV4: AJMP GB 設計一個程序,能夠實時顯示 INT0引腳上出現的負跳變信 號的累計數。 主程序: ORG 0000H AJMP MAIN ORG 0003H AJMP
11、IP0 ORG 0030H MAIN: MOV SP, #60H SETB IT0 SETB EA SETB EX0 MOV R7, #00H LP: ACALL DISP AJMP LP 中斷服務子程序: IP0: INC R7 RETI 中斷程序舉例: 例: X1、 X2、 X3為 3個 故障輸入,當系統 無 故障 時,它們全為 低 電平, 3個燈不亮;當 某部分出現 故障 時, 其對應的輸入端由低 電平變?yōu)?高 電平,從 而引起單片機中斷, 并點亮對應的發(fā)光二 極管。 主程序: ORG 0000H AJMP MAIN ORG 0003H AJMP SERVE MAIN: ORL P1, #0FFH ; P1口設初值,燈全滅 SETB IT0 ;選擇邊沿觸發(fā)方式 SETB EX0 ;允許 INT0中斷 SETB EA ;開 CPU中斷 SJMP $ ;等待中斷 中斷服務子程序: SERVE: JNB P1.0, L1 ;若 X1無故障 (P1.0=0),跳到 L1 CLR P1.3 ;點亮 LED1 L1: JNB P1.1, L2 ;若 X2無故障,跳到 L2 CLR P1.4 ;點亮 LED2 L2: JNB P1.2, L3 ;若 X3無故障,跳到 L3 CLR P1.5 ;點亮 LED3 L3: RETI