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