單片機(jī)原理及應(yīng)用教學(xué)課件第6章mcs51單片機(jī)中斷系統(tǒng)1rev2_第1頁
單片機(jī)原理及應(yīng)用教學(xué)課件第6章mcs51單片機(jī)中斷系統(tǒng)1rev2_第2頁
單片機(jī)原理及應(yīng)用教學(xué)課件第6章mcs51單片機(jī)中斷系統(tǒng)1rev2_第3頁
單片機(jī)原理及應(yīng)用教學(xué)課件第6章mcs51單片機(jī)中斷系統(tǒng)1rev2_第4頁
單片機(jī)原理及應(yīng)用教學(xué)課件第6章mcs51單片機(jī)中斷系統(tǒng)1rev2_第5頁
已閱讀5頁,還剩60頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第 6 章 MCS51單片機(jī)中斷系統(tǒng) 6.1 中斷的概念 計(jì)算機(jī)在執(zhí)行既定程序時(shí),被其它事件打斷而停止原程序的執(zhí)行,轉(zhuǎn)而去執(zhí)行相應(yīng)的處理程序,待處理完成后,再返回去繼續(xù)執(zhí)行被暫時(shí)中止的原程序,這一過程稱為中斷。第1頁,共65頁。作用:采用中斷技術(shù)可以提高CPU效率、解決速度矛盾、實(shí)現(xiàn)并行工作、分時(shí)操作、實(shí)時(shí)處理、故障處理、應(yīng)付突發(fā)事件,可使多項(xiàng)任務(wù)共享一個(gè)資源(CPU)。 中斷與子程序的最主要區(qū)別:子程序是預(yù)先安排好的,中斷是隨機(jī)發(fā)生的。中斷涉及的幾個(gè)環(huán)節(jié):中斷源、 中斷申請、開放中斷、保護(hù)現(xiàn)場、中斷服務(wù)、恢復(fù)現(xiàn)場、中斷返回。第2頁,共65頁。中斷過程示意圖中斷請求第3頁,共65頁。引起CPU

2、中斷正在執(zhí)行的程序而轉(zhuǎn)向相應(yīng)的處理程序的根源,稱為中斷源;CPU響應(yīng)中斷請求并進(jìn)行相應(yīng)處理的過程叫中斷服務(wù);處理完中斷事件后,再回到原來被中斷的地方(即斷點(diǎn)),稱為中斷返回;實(shí)現(xiàn)從產(chǎn)生中斷請求、進(jìn)行中斷服務(wù)并返回?cái)帱c(diǎn)等一系列功能的部件稱為中斷系統(tǒng)。第4頁,共65頁。中斷系統(tǒng)功能對于一個(gè)中斷源,需要:響應(yīng)請求進(jìn)行中斷服務(wù)(保護(hù)現(xiàn)場)實(shí)現(xiàn)中斷返回 對于有多個(gè)中斷源的系統(tǒng),還需要:對中斷請求進(jìn)行屏蔽或允許對同時(shí)產(chǎn)生的多個(gè)中斷請求進(jìn)行排序,按優(yōu)先級別順序服務(wù)中斷服務(wù)再被其它中斷請求中斷而進(jìn)行中斷嵌套等管理功能 第5頁,共65頁。MCS51單片機(jī)系統(tǒng)中,中斷系統(tǒng)的功能是通過設(shè)置和訪問與中斷系統(tǒng)有關(guān)的特殊

3、功能寄存器完成的。與中斷系統(tǒng)有關(guān)的特殊功能寄存器有:IE、IP以及TCON和SCON的有關(guān)位。 第6頁,共65頁。 中斷請求: 定時(shí)和外中斷控制寄存器TCON; 串行控制寄存器SCON; 中斷允許控制寄存器IE; 中斷優(yōu)先級控制寄存器IP。 80C51單片機(jī)中涉及中斷控制的有3個(gè)方面4個(gè)特殊功能寄存器:中斷控制寄存器:第7頁,共65頁。6.2 MCS51單片機(jī)的中斷源 MCS-51單片機(jī)中斷系統(tǒng)有5個(gè)中斷源(其中2個(gè)為外部中斷源,3個(gè)為內(nèi)部中斷源),2個(gè)優(yōu)先級,可實(shí)現(xiàn)二級中斷嵌套;51子系列允許5個(gè)(52子系列6個(gè))中斷源: 2個(gè)外部中斷請求:INT0,INT1 2個(gè)片內(nèi)定時(shí)器/計(jì)數(shù)器T0和T

4、1中斷請求: TF0,TF1,(TF252子系列有T2) 1個(gè)串行口中斷請求:TI/RI中斷源是指能發(fā)出中斷請求,引起中斷的裝置或事件。第8頁,共65頁。INT0:外部中斷0,中斷請求信號由P3.2輸入。INT1:外部中斷1,中斷請求信號由P3.3輸入。T0:定時(shí)/計(jì)數(shù)器0溢出中斷,對外部脈沖計(jì)數(shù)由P3.4輸入。T1:定時(shí)/計(jì)數(shù)器1溢出中斷,對外部脈沖計(jì)數(shù)由P3.5輸入。串行中斷:包括串行接收中斷RI和串行發(fā)送中斷TI。具體來說:第9頁,共65頁。CPU在每個(gè)機(jī)器周期的S5P2期間,會(huì)自動(dòng)查詢各個(gè)中斷申請標(biāo)志位,若查到某標(biāo)志位被置位,將啟動(dòng)中斷機(jī)制。CPU識別中斷申請的依據(jù): Tc=1/fos

5、c Ts=6Tc Tm=12Tc=6TsTcTsTmTmS5S6S4S3S2S5S6S4S3S2S1第10頁,共65頁。INT0、INT1、T0、T1中斷請求標(biāo)志放在TCON中。1. 中斷請求控制寄存器 字節(jié)地址為88HTCOND7D6D5D4D3D2D1D0位名稱TF1TF0IE1IT1IE0IT0位地址8FH8EH8DH8CH8BH8AH89H88H功能 T1 中斷標(biāo)志T0中斷標(biāo)志 中斷標(biāo)志 觸發(fā)方式 中斷標(biāo)志觸發(fā)方式TCON的結(jié)構(gòu)、位名稱、位地址和功能如下:第11頁,共65頁。 TCON位功能: TF1 T1溢出中斷請求標(biāo)志 T1計(jì)數(shù)溢出后,TF1=1 TF0 T0溢出中斷請求標(biāo)志 T0

6、計(jì)數(shù)溢出后,TF0=1TF0/TF1:定時(shí)器溢出中斷申請標(biāo)志位: =0:定時(shí)器未溢出; =1:定時(shí)器溢出申請中斷,進(jìn)中斷后自動(dòng)清零。 IE1 外中斷中斷請求標(biāo)志 當(dāng)P3.3引腳信號有效時(shí),IE1=1 IE0 外中斷中斷請求標(biāo)志 當(dāng)P3.2引腳信號有效時(shí),IE0=1IE0/IE1:外部中斷申請標(biāo)志位: =0:沒有外部中斷申請; =1:有外部中斷申請,CPU響應(yīng)后自動(dòng)清零?。第12頁,共65頁。 IT1 外中斷觸發(fā)方式控制位 IT1=1,邊沿觸發(fā)方式,即P3.3出現(xiàn)下跳邊 脈沖有效; IT1=0,電平觸發(fā)方式,低電平有效。 IT0 外中斷觸發(fā)方式控制位 其意義和功能與IT1相似。IT0/IT1:外

7、部中斷請求的觸發(fā)方式選擇位: =0:在INT0/INT1端申請中斷的信號低電平有效; =1:在INT0/INT1端申請中斷的信號負(fù)跳變有效.第13頁,共65頁。低電平觸發(fā) 引腳上的低電平須持續(xù)到中斷發(fā)生。若中斷返回前仍未及時(shí)撤除低電平,將再次中斷。下降沿觸發(fā) CPU在前一機(jī)器周期采到INT0/INT1引腳為高,后一機(jī)器周期采到為低才認(rèn)為是一次中斷請求。CPU 可記憶申請、可自動(dòng)撤除中斷申請。注意:第14頁,共65頁。2. 串行控制寄存器SCON字節(jié)地址為98H。串行口的發(fā)送中斷和接收中斷的中斷請求標(biāo)志TI和RI,TCOND7D6D5D4D3D2D1D0位名稱TIRI位地址99H98H功能 串行

8、發(fā)送中斷標(biāo)志串行接收中斷標(biāo)志 TI 串行口發(fā)送中斷請求標(biāo)志 RI 串行口接收中斷請求標(biāo)志第15頁,共65頁。 各標(biāo)志位的功能: (1)TI發(fā)送中斷請求標(biāo)志位。串口每發(fā)送完一幀串行數(shù)據(jù)后,硬件自動(dòng)置“1”TI。必須在中斷服務(wù)程序中用軟件對TI標(biāo)志清“0”。 (2)RI接收中斷請求標(biāo)志位。串口接收完一個(gè)數(shù)據(jù)幀,硬件自動(dòng)置“1”RI標(biāo)志。必須在中斷服務(wù)程序中用軟件對RI標(biāo)志清“0”。第16頁,共65頁。MCS51單片機(jī)中斷系統(tǒng)結(jié)構(gòu)第17頁,共65頁。6.3 中斷允許和中斷優(yōu)先級 1.中斷允許控制寄存器IE 中斷源是否允許向CPU發(fā)出請求,由中斷允許寄存 器IE控制 IE可位尋址,字節(jié)地址A8H,位地

9、址為A8HAFHIED7D6D5D4D3D2D1D0位名稱EAESET1EX1ET0EX0位地址AFHACHABHAAHA9HA8H中斷源CPU串行口T1T0第18頁,共65頁。 EA CPU中斷允許控制位(總開關(guān)) EA=1,CPU開中; EA=0,CPU關(guān)中,且屏蔽所有5個(gè)中斷源。 EX0 外中斷INT0中斷允許控制位 EX0=1,INT0開中;EX0=0,INT0關(guān)中。 EX1 外中斷INT1中斷允許控制位 EX1=1,INT1開中;EX1=0,INT1關(guān)中。 ET0 定時(shí)/計(jì)數(shù)器T0中斷允許控制位 ET0=1,T0開中;ET0=0,T0關(guān)中。 ET1 定時(shí)/計(jì)數(shù)器T1中斷允許控制位 E

10、T1=1,T1開中;ET1=0,T1關(guān)中。 ES 串行口中斷(包括串發(fā)、串收)允許控制位 ES=1,串行口開中;ES=0,串行口關(guān)中。說明: 80C51對中斷實(shí)行兩級控制,總控制位是EA,每一中斷源還有各自的控制位。首先要EA=1,其次還要自身的控制位置“1”。第19頁,共65頁。例如:要使INT0開中(其余關(guān)中),可執(zhí)行下列指令: MOV IE,#1000000lB ; 或者: SETB EA ; SETB EX0 ; IED7D6D5D4D3D2D1D0位名稱EAESET1EX1ET0EX0位地址AFHACHABHAAHA9HA8H中斷源CPU串行口T1T0中斷允許控制寄存器IE第20頁,

11、共65頁。注意:改變IE的內(nèi)容,可由位操作指令來實(shí)現(xiàn),即: SETB bit ;對某一位置1 CLR bit ;對某一位清0例6-1 若允許片內(nèi)2個(gè)定時(shí)器/計(jì)數(shù)器中斷,禁止其它中斷源的中斷請求。編寫設(shè)置IE的相應(yīng)程序段(1)用位操作指令來編寫如下程序段:CLR ES ;禁止串行口中斷 CLR EX1 ;禁止外部中斷1中斷CLR EX0;禁止外部中斷0中斷 SETB ET0 ;允許定時(shí)器/計(jì)數(shù)器T0中斷 SETB ET1 ;允許定時(shí)器/計(jì)數(shù)器T1中斷 SETB EA ;CPU開中斷第21頁,共65頁。(2)用字節(jié)操作指令來編寫: MOV IE,#8AH ;100010010或者用: MOV 0A

12、8H,#8AH ;A8H為IE寄存器字節(jié)地址IED7D6D5D4D3D2D1D0位名稱EAESET1EX1ET0EX0位地址AFHACHABHAAHA9HA8H中斷源CPU串行口T1T0注意:當(dāng)MCS-51復(fù)位后,IE被清0,則CPU關(guān)中斷,所有中斷請求被禁止。第22頁,共65頁。2.中斷優(yōu)先級控制寄存器IP MCS-51單片機(jī)有5個(gè)中斷源,劃分為2個(gè)中斷優(yōu)先級:高優(yōu)先級和低優(yōu)先級??梢赃M(jìn)行中斷嵌套。 當(dāng)CPU正在執(zhí)行某個(gè)中斷服務(wù)程序時(shí),如果發(fā)生更高一級的中斷源請求中斷,CPU可以“中斷”正在執(zhí)行的低優(yōu)先級中斷,轉(zhuǎn)而響應(yīng)更高一級的中斷,這就是中斷嵌套。 中斷嵌套只能高優(yōu)先級“中斷”低優(yōu)先級,低

13、優(yōu)先級不能“中斷”高優(yōu)先級,同一優(yōu)先級也不能相互“中斷”。第23頁,共65頁。 中斷嵌套結(jié)構(gòu)類似與調(diào)用子程序嵌套,不同的是: 子程序嵌套是在程序中事先按排好的;中斷嵌套是隨機(jī)發(fā)生的。 子程序嵌套無次序限制,中斷嵌套只允許高優(yōu)先級“中斷”低優(yōu)先級。第24頁,共65頁。5個(gè)中斷源可通過設(shè)置中斷優(yōu)先級控制寄存器IP中的相關(guān)位,程控為高或低優(yōu)先級中斷優(yōu)先級控制寄存器IP字節(jié)地址為B8H,可位尋址,位地址為B8HBFH,只有低6位有效系統(tǒng)復(fù)位時(shí),IP清零,即所有中斷源為低優(yōu)先級 IPD7D6D5D4D3D2D1D0位名稱PSPT1PX1PT0PX0位地址BCHBBHBAHB9HB8H中斷源串行口T1IN

14、T1T0INT0IP的結(jié)構(gòu)、位名稱和位地址如下:第25頁,共65頁。 PX0 :INT0中斷優(yōu)先級控制位。PX0=1,為高優(yōu)先級;PX0=0,為低優(yōu)先級; PX1 :INT1中斷優(yōu)先級控制位??刂品椒ㄍ稀?PT0 :T0中斷優(yōu)先級控制位??刂品椒ㄍ稀?PT1 :T1中斷優(yōu)先級控制位。控制方法同上。 PS :串行口中斷優(yōu)先級控制位??刂品椒ㄍ?。 IPD7D6D5D4D3D2D1D0位名稱PSPT1PX1PT0PX0位地址BCHBBHBAHB9HB8H中斷源串行口T1INT1T0INT0第26頁,共65頁。例如:若要將INT1、串行口設(shè)置為高優(yōu)先級,其余中斷源設(shè)置為低優(yōu)先級,可執(zhí)行下列指令:

15、 MOV IP,#00010100B;需要指出的是,若置5個(gè)中斷源全部為高優(yōu)先級,就等于不分優(yōu)先級。 IED7D6D5D4D3D2D1D0位名稱PSPT1PX1PT0PX0位地址BCHBBHBAHB9HB8H中斷源串行口T1INT1T0INT0中斷優(yōu)先級控制寄存器IP第27頁,共65頁。中斷系統(tǒng)針對中斷優(yōu)先級的三條原則CPU同時(shí)接收到幾個(gè)中斷時(shí),首先響應(yīng)優(yōu)先級別最高的中斷請求。正在進(jìn)行的中斷過程不能被新的同級或低優(yōu)先級的中斷請求所中斷。正在進(jìn)行的低優(yōu)先級中斷服務(wù),能被高優(yōu)先級中斷請求所中斷 ,反之則不能。第28頁,共65頁。由軟件可改變各中斷源的中斷優(yōu)先級。 MCS- 51的中斷系統(tǒng)有兩個(gè)不可

16、尋址的“優(yōu)先級狀態(tài)觸發(fā)器”:一個(gè)用來指示某高優(yōu)先級的中斷正在執(zhí)行,所有后來的中斷均被阻止。另一個(gè)用來指示某低優(yōu)先級的中斷正在執(zhí)行,所有同級中斷都被阻止,但不阻斷高優(yōu)先級的中斷請求。在同時(shí)收到幾個(gè)同一優(yōu)先級的中斷請求時(shí),優(yōu)先響應(yīng)哪一個(gè)中斷,取決于內(nèi)部的硬件查詢順序。優(yōu)先級狀態(tài)觸發(fā)器第29頁,共65頁。硬件查詢順序 多個(gè)同級中斷源同時(shí)提出請求時(shí),通過“硬件查詢順序”確定先響應(yīng)哪個(gè)請求查詢順序中 斷 源硬件優(yōu)先級別1外部中斷0最高最低2定時(shí)/計(jì)數(shù)器03外部中斷14定時(shí)/計(jì)數(shù)器15串行口優(yōu)先級狀態(tài)觸發(fā)器解決了不同優(yōu)先級中斷請求的響應(yīng)順序問題,而且保證高優(yōu)先級請求可以中斷已開始的低優(yōu)先級服務(wù)。 第30頁

17、,共65頁。對同時(shí)發(fā)生多個(gè)中斷申請時(shí):不同優(yōu)先級的中斷同時(shí)申請(很難遇到) 先高后低相同優(yōu)先級的中斷同時(shí)申請(很難遇到) 按序執(zhí)行正處理低優(yōu)先級中斷又接到高級別中斷 高打斷低正處理高優(yōu)先級中斷又接到低級別中斷 高不理低中斷優(yōu)先級處理原則第31頁,共65頁。6.4 響應(yīng)中斷請求的條件及過程 一個(gè)中斷請求被響應(yīng),需滿足以下必要條件:(1)IE寄存器中的中斷總允許位EA=1。(2)該中斷源發(fā)出中斷請求,即該中斷源對應(yīng)的中斷請求標(biāo)志為“1”。(3)該中斷源的中斷允許位=1,即該中斷沒有被屏蔽。(4)無同級或更高級中斷正在被服務(wù)。第32頁,共65頁。如果存在以下任一情況,不產(chǎn)生硬件LCALL指令,對中斷

18、請求標(biāo)志的采樣結(jié)果被取消:CPU正在處理同級或高優(yōu)先級中斷;當(dāng)前機(jī)器周期不是所執(zhí)行指令的最后一個(gè)周期,只有在當(dāng)前指令執(zhí)行完畢后,才能進(jìn)行中斷響應(yīng) ;當(dāng)前指令為 RETI 或訪問 IE 、IP寄存器的指令。需要再去執(zhí)行完一條指令,才能響應(yīng)新的中斷請求。 第33頁,共65頁。將相應(yīng)的優(yōu)先級狀態(tài)觸發(fā)器置“1”,阻斷后來的同級或低級的中斷請求;保留斷點(diǎn)地址(將PC的內(nèi)容壓入堆棧以保護(hù)斷點(diǎn)),以備中斷服務(wù)完成后返回?cái)帱c(diǎn)處繼續(xù)執(zhí)行;根據(jù)中斷源不同,對中斷請求標(biāo)志進(jìn)行不同處理;將相應(yīng)的中斷服務(wù)程序的入口地址送入PC,執(zhí)行一條硬件LCALL addr16指令,使程序轉(zhuǎn)入中斷服務(wù)程序。 注意:各中斷源服務(wù)程序的

19、入口地址固定!如果沒有上述阻止情況,中斷將得到響應(yīng),并由硬件執(zhí)行以下功能 :第34頁,共65頁。中斷請求標(biāo)志及入口地址 分類中斷源中斷請求標(biāo)志位中斷入口地址外部中斷外部中斷0IE0 (TCON.1)0003H外部中斷1IE1 (TCON.3)000BH內(nèi)部中斷定時(shí)/計(jì)數(shù)器0中斷TF0 (TCON.5)0013H定時(shí)/計(jì)數(shù)器1中斷TF1 (TCON.7)001BH串口中斷接收中斷RI (SCON.0)0023H發(fā)送中斷TI (SCON.0)中斷優(yōu)先級最高優(yōu)先級最低優(yōu)先級第35頁,共65頁。在CPU已經(jīng)開放了外部中斷允許的前提下:在INT0/INT1引腳輸入一個(gè)負(fù)脈沖或低電平, TCON寄存器中的

20、IE0/IE1標(biāo)志位自動(dòng)變“1”,檢測到IE0/IE1變“1”后,將產(chǎn)生指令: LCALL 0003H(/0013H)執(zhí)行中斷服務(wù)程序,并將IE0/IE1標(biāo)志位自動(dòng)清“0”,以備下次申請。外部中斷(INT0,INT1)申請過程第36頁,共65頁??偨Y(jié):中斷處理過程中斷處理過程大致可分為五步:中斷請求、中斷響應(yīng)、中斷服務(wù)、中斷返回、中斷請求的撤除 中斷請求 中斷源發(fā)出中斷請求信號,相應(yīng)的中斷請求標(biāo)志位(在中斷控制寄存器TCON、SCON中)置“1”。 中斷響應(yīng) CPU查詢(檢測)到某中斷標(biāo)志為“1”,在滿足中斷響應(yīng)條件下,響應(yīng)中斷。 中斷響應(yīng)條件: 該中斷已經(jīng)“開中”; CPU此時(shí)沒有響應(yīng)同級或

21、更高級的中斷; 當(dāng)前正處于所執(zhí)行指令的最后一個(gè)機(jī)器周期; 正在執(zhí)行的指令不是RETI或者是訪向IE、IP的指令,否則必須再另外執(zhí)行一條指令后才能響應(yīng)。第37頁,共65頁。 中斷響應(yīng)操作: CPU響應(yīng)中斷后,進(jìn)行下列操作: 保護(hù)斷點(diǎn)地址; 撤除該中斷源的中斷請求標(biāo)志; 關(guān)閉同級中斷; 將相應(yīng)中斷的入口地址送入PC; MCS-51五個(gè)中斷入口地址: INT0:0003H; T0:000BH; INT1:0013H; T1:001BH; 串行口:0023H第38頁,共65頁。 執(zhí)行中斷服務(wù)程序 中斷服務(wù)程序應(yīng)包含以下幾部分: 保護(hù)現(xiàn)場 執(zhí)行中斷服務(wù)程序主體,完成相應(yīng)操作 恢復(fù)現(xiàn)場保護(hù)現(xiàn)場:在中斷服務(wù)

22、程序中,通常會(huì)涉及到一些特殊功能寄存器,如Acc、PSW和DPTR等,而這些特殊功能寄存器中斷前的數(shù)據(jù)在中斷返回后還要用到,若在中斷服務(wù)程序中被改變,返回主程序后將會(huì)出錯(cuò)。因此,要求把這些特殊功能寄存器中斷前的數(shù)據(jù)保存起來,待中斷返回時(shí)恢復(fù)。 第39頁,共65頁。 中斷返回 在中斷服務(wù)程序最后,必須安排一條中斷返回指令RETI,當(dāng)CPU執(zhí)行RETI指令后,自動(dòng)完成下列操作: 恢復(fù)斷點(diǎn)地址。 開放同級中斷,以便允許同級中斷源請求中斷?;謴?fù)斷點(diǎn)地址: 將原來壓入堆棧中的PC斷點(diǎn)地址從堆棧中彈出,送回PC。這樣CPU就返回到原斷點(diǎn)處,繼續(xù)執(zhí)行被中斷的原程序。初學(xué)者容易模糊的是,中斷返回,返回哪里?

23、答案是:從什么地方來,回什么地方去。不是返回到相應(yīng)中斷的入口地址,而是返回到中斷斷點(diǎn)地址。 第40頁,共65頁。 5 中斷請求的撤除(重點(diǎn)) 中斷源發(fā)出中斷請求,相應(yīng)中斷請求標(biāo)志置“1”。 CPU響應(yīng)中斷后,必須清除中斷請求“1”標(biāo)志。否則中斷響應(yīng)返回后,將再次進(jìn)入該中斷,引起死循環(huán)出錯(cuò)。 對定時(shí)/計(jì)數(shù)器T0、T1中斷,外中斷INT0、INT1,若采用邊沿觸發(fā)方式,CPU響應(yīng)中斷時(shí)就用硬件自動(dòng)清除了相應(yīng)的中斷請求標(biāo)志TF0、TF1、IE0、IE1。 對外中斷INT0、INT1,若采用電平觸發(fā)方式,需要采取軟硬結(jié)合的方法消除后果(為什么?)。 對串行口中斷,用戶應(yīng)在串行中斷服務(wù)程序中用軟件清除T

24、I或RI。第41頁,共65頁。補(bǔ)講:外部中斷的觸發(fā)方式選擇兩種觸發(fā)方式:電平觸發(fā)方式和跳沿觸發(fā)方式。 電平觸發(fā)方式外部中斷源必須保持低電平有效,直到該中斷被響應(yīng)。同時(shí)在中斷返回前外部中斷請求輸入必須無效(即變?yōu)楦唠娖剑┍仨毷闺娖阶兏?,否則CPU返回主程序后會(huì)再次響應(yīng)中斷。適于外中斷以低電平輸入且中斷服務(wù)程序能清除外部中 斷請求(即外部中斷輸入電平又變?yōu)楦唠娖剑┑那闆r。 跳沿觸發(fā)方式 連續(xù)兩次采樣,一個(gè)機(jī)器周期采樣到外部中斷輸入為高,下一個(gè)機(jī)器周期采樣為低,則置“1”中斷請求標(biāo)志,直到CPU響應(yīng)此中斷時(shí),該標(biāo)志才清0。這樣不會(huì)丟失中斷,但輸入的負(fù)脈沖寬度至少保持1個(gè)機(jī)器周期。 第42頁,共65頁

25、。關(guān)鍵點(diǎn): 下降沿觸發(fā)是鎖存中斷信號D觸發(fā)器記憶的,意即:即使當(dāng)時(shí)CPU來不及響應(yīng)中斷,外部中斷信號撤消后,由于D觸發(fā)器的記憶作用,消失的中斷信號仍然有效,直到被響應(yīng)并進(jìn)入中斷,記憶的中斷信號才會(huì)由硬件清除; 而低電平觸發(fā)是即時(shí)的,當(dāng)外部中斷信號撤消時(shí),中斷申請信號隨之消失。也就是:如果在外部中斷信號作用申請期間,CPU來不及響應(yīng)此中斷,那么有可能,這次中斷申請就漏掉了。顯然下降沿觸發(fā)不會(huì)漏掉短暫的中斷申請信號。 低電平觸發(fā)信號低電平寬度顯然不能大于中斷響應(yīng)執(zhí)行時(shí)間,否則,當(dāng)中斷處理完成,RETI退出中斷時(shí),將再次被低電平觸發(fā),如此反復(fù)響應(yīng)中斷,因?yàn)橛布荒茏詣?dòng)清除中斷申請標(biāo)志。第43頁,共6

26、5頁。例: 硬件電路如圖所示。當(dāng)外部設(shè)備有中斷請求時(shí),中斷請求信號經(jīng)反相,加到鎖存器CP端,作為CP脈沖。由于D端接地為0,Q端輸出低點(diǎn)平,觸發(fā) INT0生中斷。此題會(huì)造成什么結(jié)果?怎樣解決?第44頁,共65頁。解決辦法:只要P1.0端輸出一個(gè)負(fù)脈沖就可以使D觸發(fā)器置“1”,從而撤消了低電平的中斷請求信號。當(dāng)CPU響應(yīng)中斷后,應(yīng)在該中斷服務(wù)程序中按排幾條指令: ORL P1,#01H ;P1.0為“1” ANL P1,#0FEH ;P1.0為“0” ORL P1,#01H;P1.0為“1” 或者: SETB P1.0 CLR P1.0 SETB P1.0 從而撤消引起重復(fù)中斷的INT0低電平信

27、號。 因此一般來說,對外中斷INT0、INTl,應(yīng)盡量采用邊沿觸發(fā)方式,以簡化硬件電路和軟件程序。 第45頁,共65頁。小結(jié):中斷請求的撤消1定時(shí)器/計(jì)數(shù)器中斷請求的撤消 中斷請求被響應(yīng)后。硬件會(huì)自動(dòng)清TF0或TF1。2外部中斷請求的撤消 (1)跳沿方式外部中斷請求的撤消是自動(dòng)撤消的。(2)電平方式外部中斷請求的撤消:除了用軟件把標(biāo)志位清“0”之外,還需在中斷響應(yīng)后把中斷請求信號引腳從低電平強(qiáng)制改變?yōu)楦唠娖?。電平方式的外部中斷請求信號的完全撤消,是通過軟硬件相結(jié)合的方法來實(shí)現(xiàn)的。3串行口中斷請求的撤消 響應(yīng)串行口的中斷后,CPU無法知道是接收中斷還是發(fā)送中斷,還需測試這兩個(gè)中斷標(biāo)志位的狀態(tài),以

28、判定是接收操作還是發(fā)送操作,然后才能清除。所以串行口中斷請求的撤消只能用軟件清除而不能由硬件自動(dòng)清除:CLR TI ;清TI標(biāo)志位CLR RI ;清RI標(biāo)志位第46頁,共65頁。6.5 中斷響應(yīng)時(shí)間 從中斷標(biāo)志建立到開始執(zhí)行相應(yīng)的服務(wù)程序,這段時(shí)間稱為中斷響應(yīng)時(shí)間。不同情況下,中斷響應(yīng)時(shí)間長短不同。最順利的情況下,中斷響應(yīng)時(shí)間如圖(延遲3個(gè)機(jī)器周期)第47頁,共65頁。最不利情況下的響應(yīng)時(shí)間查詢到中斷標(biāo)志的機(jī)器周期是RETI指令或修改IE、IP指令的第一個(gè)機(jī)器周期,則需等待2個(gè)機(jī)器周期讓上述指令執(zhí)行完成 ;下一條指令正好是執(zhí)行周期最長的乘除法指令,則需繼續(xù)等待4個(gè)機(jī)器周期 硬件LCALL指令本

29、身需要2個(gè)執(zhí)行周期,則從中斷請求標(biāo)志置“1”到進(jìn)入相應(yīng)的中斷服務(wù)需要8個(gè)完整的機(jī)器周期 第48頁,共65頁。如果一個(gè)中斷請求標(biāo)志建立后,CPU沒有在處理同級或高優(yōu)先級中斷,則中斷響應(yīng)時(shí)間為38個(gè)完整機(jī)器周期; 如果一個(gè)中斷請求標(biāo)志建立后,CPU正在處理同級或高優(yōu)先級中斷,則額外的等待時(shí)間取決于正在執(zhí)行的中斷服務(wù)程序所需的時(shí)間 。第49頁,共65頁。 中斷服務(wù)程序與主程序沒有本質(zhì)區(qū)別,但要注意保證中斷服務(wù)程序與主程序(被中斷程序)的正確銜接,即應(yīng)注意以下問題:在整個(gè)中斷服務(wù)程序執(zhí)行期間必須維持堆棧平衡,以保證正確返回主程序斷點(diǎn)處;中斷服務(wù)程序中用到的所有寄存器和存儲(chǔ)器單元只要是在主程序中也要使用

30、的,都必須加以保護(hù);為了保證CPU能對優(yōu)先級狀態(tài)觸發(fā)器進(jìn)行正確設(shè)置,不能用“RET”指令代替“RETI”指令;幾個(gè)中斷源的入口地址相對集中,一般在中斷入口地址上放一條LJMP指令,使中斷服務(wù)程序安排在64K程序存儲(chǔ)器的適當(dāng)?shù)胤健?.6 中斷服務(wù)程序編寫第50頁,共65頁。 單片機(jī)響應(yīng)中斷后,只保護(hù)斷點(diǎn)而不保護(hù)程序現(xiàn)場。PC斷點(diǎn)的保護(hù)由是硬件自動(dòng)完成,而對ACC、PSW、DPTR、B、Rn等應(yīng)用程序現(xiàn)場的保護(hù)則必須由軟件在中斷服務(wù)程序中完成 。注意第51頁,共65頁。中斷應(yīng)用前后要做的幾項(xiàng)工作 中斷前 開中斷允許:必須 選擇優(yōu)先級:根據(jù)需要選擇,可有/可無 設(shè)置控制位:INTx觸發(fā)方式(ITx)

31、 TxTCON,TMOD,TRx,初值 RI/TISCON,REN,RB8,TB8,中斷后進(jìn)入中斷服務(wù)后:保護(hù)現(xiàn)場,(關(guān)中斷),退出中斷服務(wù)前:恢復(fù)現(xiàn)場,(開中斷),設(shè)Tx的初 值,清TI/RI,中斷服務(wù)程序的最后一條指令必是 RETI第52頁,共65頁。中斷系統(tǒng)程序編寫 中斷初始化 設(shè)置堆棧指針SP 定義中斷優(yōu)先級 定義外中斷觸發(fā)方式 開放中斷 安排好等待中斷或中斷發(fā)生前主程序應(yīng)完成的操作內(nèi)容。 中斷服務(wù)主程序 中斷服務(wù)子程序內(nèi)容要求: 在中斷服務(wù)入口地址設(shè)置一條跳轉(zhuǎn)指令,轉(zhuǎn)移到中斷服務(wù)程序的實(shí)際入口處。 根據(jù)需要保護(hù)現(xiàn)場。 中斷源請求中斷服務(wù)要求的操作。 恢復(fù)現(xiàn)場。與保護(hù)現(xiàn)場相對應(yīng),注意先

32、進(jìn)后出、后進(jìn)先出操作原則。 中斷返回,最后一條指令必須是RETI。第53頁,共65頁。中斷服務(wù)程序的流程第54頁,共65頁。中斷應(yīng)用程序舉例:例:通過外部中斷1,在中斷服務(wù)中將B寄存器里的內(nèi)容左環(huán)移一位。 已知: (B)=01h,要求采用邊沿觸發(fā),低優(yōu)先級。此例的實(shí)際意義:在INT1引腳接一個(gè)按鈕開關(guān)到地,每按一下按鈕就申請一次中斷,中斷服務(wù)則是:依次點(diǎn)亮八盞燈中的一盞。 P1.0P1.7INT1300第55頁,共65頁。 ORG 0000H LJMP MAIN ORG 0013H ;中斷矢量 LJMP INTMAIN:SETB EA ;開總中斷允許“開關(guān)” SETB EX1 ;開分中斷允許“

33、開關(guān)” CLR PX1 ;0 優(yōu)先級(也可不要此句) SETB IT1 ;邊沿觸發(fā) MOV B,#01H ;給 B 寄存器賦初值HERE:SJMP HERE ;原地等待中斷申請INT:MOV A,B ;自B寄存器中取數(shù) RL A ;左環(huán)移一次 MOV B,A ;存回B,備下次取用 MOV P1,A ;輸出到P1口 RETI ;中斷返回中斷服 務(wù)程序第56頁,共65頁。6.7 中斷系統(tǒng)小結(jié)CPU在執(zhí)行程序的時(shí)候監(jiān)測其它事件的發(fā)生常用的方法有兩種:查詢和中斷。查詢就是每執(zhí)行若干條指令或經(jīng)過一段時(shí)間后檢查一遍是否有其它事件發(fā)生-很難及時(shí)發(fā)現(xiàn)其它事件的請求;而更多情況是查詢一遍一無所獲,經(jīng)過成百上千次

34、查詢以后才檢測到某個(gè)其它事件的請求-查詢方法實(shí)時(shí)性和效率永遠(yuǎn)是難以統(tǒng)一的矛盾。 第57頁,共65頁。中斷監(jiān)測其它事件發(fā)生的方法在本質(zhì)上仍然是“查詢”,不同之處在于中斷是每個(gè)機(jī)器周期查詢一次,且不影響正常程序的執(zhí)行;中斷方式的實(shí)時(shí)性好;中斷系統(tǒng)對其它事件請求的響應(yīng)與主程序的執(zhí)行在宏觀上是并行的,但在微觀上仍然是串行的,其根本原因在于CPU在任一時(shí)刻只能執(zhí)行一條指令;只有多CPU系統(tǒng)才能實(shí)現(xiàn)真正意義上的并行處理。第58頁,共65頁。結(jié)束第59頁,共65頁。補(bǔ)充: 中斷系統(tǒng)的應(yīng)用 中斷初始化 設(shè)置堆棧指針SP 定義中斷優(yōu)先級 定義外中斷觸發(fā)方式 開放中斷 安排好等待中斷或中斷發(fā)生前主程序應(yīng)完成的操作內(nèi)容。 中斷服務(wù)主程序 中斷服務(wù)子程序內(nèi)容要求: 在中斷服務(wù)入口地址設(shè)置一條跳轉(zhuǎn)指令,轉(zhuǎn)移到中斷服務(wù)程序的實(shí)際入口處。 根據(jù)需要保護(hù)現(xiàn)場。 中斷源請求中斷服

溫馨提示

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

評論

0/150

提交評論