單片機(jī)中斷和存儲空間的擴(kuò)展_第1頁
單片機(jī)中斷和存儲空間的擴(kuò)展_第2頁
單片機(jī)中斷和存儲空間的擴(kuò)展_第3頁
單片機(jī)中斷和存儲空間的擴(kuò)展_第4頁
單片機(jī)中斷和存儲空間的擴(kuò)展_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第五章 單片機(jī)中斷和存儲空間的擴(kuò)展 5.1單片機(jī)中斷 5.1.1 中斷定義 5.1.2 中斷工作流程 5.1.3 中斷嵌套和中斷優(yōu)先級 5.1.4 中斷潛在危險(xiǎn) 5.2 單片機(jī)中斷程序設(shè)計(jì)實(shí)例 Page 1 Lecture3 Page 2單片機(jī)的認(rèn)識與實(shí)踐 中斷 What and Why 中斷處理流程 標(biāo)志位 使能 中斷服務(wù)程序ISR 中斷向量表 Interrupt vector table 中斷嵌套和中斷優(yōu)先級 nesting/prioirity 中斷潛伏期 latency Lecture3 Page 3單片機(jī)的認(rèn)識與實(shí)踐 什么是中斷 中斷是一個需要CPU立刻處理的內(nèi)部/外部事件 內(nèi)部事件

2、: 定時器定時時間到 AD變換結(jié)束 . 外部事件 : 按鍵動作 發(fā)生外部通信 Lecture3 Page 4單片機(jī)的認(rèn)識與實(shí)踐 中斷 vs 輪詢 輪詢: 周期/連續(xù)的檢查外部事件是否發(fā)生 消耗大量CPU的處理時間 輪詢過程需要和其他功能代碼結(jié)合 由于CPU需要處理其他事件(可能是無關(guān)緊要的),可能 丟失關(guān)鍵事件 中斷 由硬件來判斷是否發(fā)生外部事件并通知CPU 專用的中斷服務(wù)程序來處理事件 Lecture3 Page 5單片機(jī)的認(rèn)識與實(shí)踐 中斷 vs 輪詢 中斷 適于處理對響應(yīng)要求非常高的事件 適于處理持續(xù)事件非常短的事件 適于低功耗的應(yīng)用 程序設(shè)計(jì)較復(fù)雜 輪詢 適于處理對時間響應(yīng)要求低的場合

3、程序設(shè)計(jì)簡單 Lecture3 Page 6單片機(jī)的認(rèn)識與實(shí)踐 中斷工作流程 內(nèi)部/外部事件請求CPU處理 CPU停止正常流程,執(zhí)行中斷服務(wù)程序ISR ISR結(jié)束后,CPU返回正常流程 正常流程 中斷請求 中斷服務(wù)子程序 Lecture3 Page 7單片機(jī)的認(rèn)識與實(shí)踐 堆棧 中斷的堆棧占用 正常流程 中斷請求 中斷處理服務(wù)程序 保存返回地址 和寄存器上下文 (Register context) Page 8單片機(jī)的認(rèn)識與實(shí)踐 中斷的堆棧占用 中斷的寄存器入棧由CPU硬件完成 對于具體的CPU,在中斷時哪些寄存器被推入 堆棧/寄存器在堆棧的保存順序是在其手冊中指 明的。 It is the p

4、rogrammers responsibility to find out from the datasheet. Lecture3 Page 9單片機(jī)的認(rèn)識與實(shí)踐 中斷 vs 輪詢 比如早上7點(diǎn)早起,要聽第一節(jié)單片機(jī)課: 反復(fù)看鐘 確定時間。 Lecture3 Page 10單片機(jī)的認(rèn)識與實(shí)踐 中斷標(biāo)志位 Indications - Interrupt flag (IF) 每一個中斷源都有對應(yīng)的中斷標(biāo)志 中斷標(biāo)志位將引發(fā)向CPU的中斷請求 通過讀寫操作可以清除中斷標(biāo)志位 What happened if IF is not cleared? Lecture3 Page 11單片機(jī)的認(rèn)識與實(shí)踐

5、 中斷控制 中斷允許/禁止 全局中斷控制 - enable/disable ALL interrupts CPU的CCR寄存器中一個特殊位. 在復(fù)位后,全局禁止位是置起的 中斷發(fā)生后,全局禁止位也被置起 Dedicated IE one bit for each interrupt sources 通常在復(fù)位后所有的中斷都被禁止了 Interrupt request IF Global IE dedicated IE Lecture3 Page 12單片機(jī)的認(rèn)識與實(shí)踐 CCR(X and I bit) 全局中斷控制不可屏蔽中斷控制位 Lecture3 Page 13單片機(jī)的認(rèn)識與實(shí)踐 CCR(

6、X and I bit) Resets, the SWI instruction are not affected by the X and I mask bits. Interrupt service requests from the XIRQ pin are inhibited when X =1, but are not affected by the I bit. X can be set from 1 to 0 only. All other interrupts are inhibited when I = 1. IRQ XIRQ Reset MCU 快速響應(yīng)的事件、 嚴(yán)重的錯誤

7、處理 絕大多數(shù)常規(guī)應(yīng)用 Lecture3 Page 14單片機(jī)的認(rèn)識與實(shí)踐 中斷服務(wù)子程 ISR 中斷服務(wù)子程(ISR,Interrupt Service Routine) 中斷服務(wù)子程不同于一般的子程序 由CPU硬件自動調(diào)用,而不是由其他程序調(diào)用 在ISR執(zhí)行前,CPU已經(jīng)進(jìn)行了一些特殊操作 ISR需要特殊的返回處理(指令) 對每一個中斷,必須調(diào)用對應(yīng)的ISR - SCI_RX_ISR: turn on global IE if interrupt nesting is enabled clear the IF .process. rti Lecture3 Page 15單片機(jī)的認(rèn)識與實(shí)踐

8、中斷向量表 中斷向量表是一段連續(xù)的存儲空間 在復(fù)位后有默認(rèn)的起始位置 通過改寫中斷向量基址寄存器可以重新定位向量表 每個中斷在向量表中都有相應(yīng)的表項(xiàng),該表項(xiàng)的值為 該中斷對應(yīng)的服務(wù)程序的地址(地址指針) 由程序代碼確定中斷向量表的每個表項(xiàng) Lecture3 Page 16單片機(jī)的認(rèn)識與實(shí)踐 中斷向量表 YES, It is also the programmers responsibility to find this information from the datasheet. Lecture3 Page 17單片機(jī)的認(rèn)識與實(shí)踐 中斷優(yōu)先級 多個中斷同時出現(xiàn)時,高優(yōu)先級中斷先得到響 應(yīng) 中

9、斷優(yōu)先級可以是固定的或編程指定的 固定優(yōu)先級: 根據(jù)中斷向量表順序 (查查DataSheet) 設(shè)定優(yōu)先級:每個中斷都有優(yōu)先級設(shè)置位 相同優(yōu)先級的中斷,按先后順序處理 Lecture3 Page 18單片機(jī)的認(rèn)識與實(shí)踐 中斷嵌套 中斷嵌套指CPU在執(zhí)行一個中斷服務(wù)程序的過 程中,可以再次響應(yīng)新的中斷請求。 在進(jìn)入中斷服務(wù)程序時,CPU硬件會將全局中 斷使能位關(guān)閉。為了實(shí)現(xiàn)中斷嵌套,必須在 ISR開始重新允許全局中斷(在有多優(yōu)先級的 情況下,選擇允許到哪一個級別的中斷)。 中斷嵌套的層數(shù) 中斷嵌套對堆棧的消耗很大 Lecture3 Page 19單片機(jī)的認(rèn)識與實(shí)踐 Normal Process

10、External event ISR 中斷嵌套時的堆棧 ISR STACK External event Lecture3 Page 20單片機(jī)的認(rèn)識與實(shí)踐 中斷的潛在危險(xiǎn) Global variables . While (A != 0) temp = arrayA; A-; putchar(temp); . ISR: . A+; Array 是個字符串,例如”hello!” A是一個全局變量 XIRQ的問題 Page 21 Numbering and coding systems 5.1 單片機(jī)中斷 中斷的定義 中斷是一個需要CPU立刻處理的內(nèi)部/外部事件 內(nèi)部事件 : 定時器定時時間到

11、AD變換結(jié)束 外部事件 : 按鍵動作 發(fā)生外部通信 由硬件來判斷是否發(fā)生外部事件并通知CPU 專用的中斷服務(wù)程序來處理事件 正常流程 中斷請求 中斷處理服務(wù)程序 Page 22 5.1 單片機(jī)中斷 中斷 vs 輪詢 中斷 適于處理對響應(yīng)要求非常高的事件 適于處理持續(xù)事件非常短的事件 適于低功耗的應(yīng)用 程序設(shè)計(jì)較復(fù)雜 輪詢: 周期/連續(xù)的檢查外部事件是否發(fā)生 消耗大量CPU的處理時間 輪詢過程需要和其他功能代碼結(jié)合 由于CPU需要處理其他事件(可能是無關(guān)緊要的),可能丟失關(guān)鍵事件 輪詢 適于處理對時間響應(yīng)要求低的場合 程序設(shè)計(jì)簡單 Page 23 5.1 單片機(jī)中斷 中斷工作流程 1、中斷源:能

12、使CPU產(chǎn)生中斷的信號源,CPU所能支持的中斷源 的數(shù)目反映CPU對外部事件的處理能力。 以MC9S12XSl28為例,提供了: 114個可屏蔽的中斷向量($FF10$FFF2)。 提供一個非可屏蔽中斷向量XIRQ($FFF4)。 提供一個非可屏蔽軟件中斷(SWl) ($FFF6)。 提供一個非可屏蔽非法指令陷阱($FFF8)。 提供三個系統(tǒng)復(fù)位向量($FFFA$FFFE) (看門狗、時鐘監(jiān)視器、復(fù)位)。 Page 24 5.1 單片機(jī)中斷 中斷工作流程 2、中斷標(biāo)志:在中斷源發(fā)生變化后,會置相應(yīng)的中斷標(biāo)志, 用以表明當(dāng)前該中斷源產(chǎn)生了請求事件。中斷 標(biāo)志在系統(tǒng)允許的情況下,就會向CPU發(fā)出中

13、 斷請求信號。多個中斷源可能共用一個中斷請 求信號,靠查詢中斷標(biāo)志來區(qū)分中斷源。 在中斷標(biāo)志有效的過程中,會持續(xù)向CPU發(fā)出 中斷請求。因此CPU在響應(yīng)了中斷請求后,必 須通過硬件或軟件指令清除中斷標(biāo)志。 Page 25 5.1 單片機(jī)中斷 中斷工作流程 3、中斷控制: (A)可屏蔽中斷的允許/禁止 全局中斷控制 - enable/disable ALL interrupts CPU的CCR寄存器中一個特殊位I. 在復(fù)位后,全局禁止位是置起的 中斷發(fā)生后,全局禁止位也被置起 專門的允許/禁止 Dedicated IE one bit for each interrupt sources 通常在

14、復(fù)位后,所有的專門中斷都被禁止了 中斷請求 中斷標(biāo)志 全局的中斷使能 專門的中斷使能 5.1 單片機(jī)中斷 中斷工作流程 (B)不可屏蔽中斷的允許/禁止 不能禁止的中斷 上電和外部按鍵復(fù)位 軟件中斷(SWl)(中斷向量為$FFF6$FFF7) SWI實(shí)質(zhì)上是一條指令,執(zhí)行過程與中斷相同,即通過中斷向量確定目標(biāo)地 址,它自動保存MCU的寄存器和返回地址,最后必須通過RTI指令返回。但它 和其他中斷有所不同,首先它的出現(xiàn)是由程序決定的,而非外部事件,因此出 現(xiàn)的時機(jī)是確定的。SWI的作用類似于某個子程序的調(diào)用。 非法指令陷阱(中斷向量為$FFF8$FFF9) MCU執(zhí)行程序時,都是執(zhí)行由匯編或編譯程

15、序生成的有效的操作碼,當(dāng)受到 干擾或系統(tǒng)混亂時,可能無法取得正確的操作碼,這些操作碼無法識別,被稱 為非法指令,此時MCU就會自動產(chǎn)生一次中斷。在軟件調(diào)試階段,合理利用 該中斷還可以發(fā)現(xiàn)某些如程序跑飛、死機(jī)等的軟件錯誤,幫助查找問題的根源。 能禁止的中斷 看門狗復(fù)位 時鐘監(jiān)視復(fù)位 外部中斷XIRQ(中斷向量為$FFF4$FFF5)。在等待和停止模式,該中斷可 喚醒MCU。XIRQ中斷一般用于系統(tǒng)掉電、硬件故障等重要場合。 5.1 單片機(jī)中斷 中斷工作流程 全局中斷控制不可屏蔽中斷控制位 CLI ANDCC#$BF Page 28 5.1 單片機(jī)中斷 中斷工作流程 4、中斷與堆棧 堆棧 正常流程

16、 中斷處理服務(wù)程序 保存返回地址 保存現(xiàn)場 恢復(fù)返回地址 恢復(fù)現(xiàn)場 Page 29 5.1 單片機(jī)中斷 中斷工作流程 中斷時,返回地址的保存與恢復(fù)由CPU硬件完成,至于在中 斷時哪些寄存器被保存以及在堆棧中的保存順序是由具體的CPU 決定的,見其工作手冊。 S12XS單片機(jī)在復(fù)位后其中斷被禁止,需要使用開中斷指令 允許CPU響應(yīng)中斷。響應(yīng)中斷時,由硬件將核心寄存器堆推入堆 棧,順序如下: Memory LocationRegisters SP+8RTNH:RTNL返回地址 SP+6YH:YL SP+4XH:XL SP+2B:A SPCCRH:CCRL Page 30 5.1 單片機(jī)中斷 中斷工

17、作流程 5、中斷向量表: CPU為每個響應(yīng)的中斷源指定一個標(biāo)號,這個標(biāo)號就叫做中 斷向量號。每個中斷的中斷服務(wù)程序的地址都按照其中斷向量號 的順序保存成一張表,叫做中斷向量表。 中斷向量表是一段連續(xù)的存儲空間 在復(fù)位后有默認(rèn)的起始位置 通過改寫中斷向量基址寄存器可以重新定位向量表 每個中斷在向量表中都有相應(yīng)的表項(xiàng),該表項(xiàng)的值為該中斷對 應(yīng)的服務(wù)程序的地址(地址指針) 由程序代碼確定中斷向量表的每個表項(xiàng) Page 31 5.1 單片機(jī)中斷 中斷工作流程 5、中斷向量表(P100): Page 32 5.1 單片機(jī)中斷 中斷工作流程 5、中斷向量表($FFFE$FF10,120個中斷向量 ) S1

18、2X單片機(jī)的三個中斷的中斷向量地址是固定不變的,它們 是: 復(fù)位向量($FFFE)。 時鐘監(jiān)控復(fù)位 ($FFFC)。 看門狗復(fù)位($FFFA)。 其他復(fù)位向量可通過修改中斷向量基地址寄存器IVBR,將中 斷向量表轉(zhuǎn)移到任意一個以256字節(jié)為邊界的地址空間。 IVBR的 地址為$0121,復(fù)位后默認(rèn)值為$FF。 Page 33 5.1 單片機(jī)中斷 中斷工作流程 6、中斷服務(wù)程序(ISR,Interrupt Service Routine) 由CPU硬件自動調(diào)用,而不是由其他程序調(diào)用 在ISR執(zhí)行前,CPU已經(jīng)進(jìn)行了一些特殊操作 ISR需要特殊的返回處理(指令) 程序設(shè)計(jì)時需要將中斷服務(wù)程序的地址填入中斷向量表 7、中斷嵌套 中斷嵌套指CPU在執(zhí)行一個中斷服務(wù)程序的過程中,可以再次響應(yīng)新 的中斷請求。 在進(jìn)入中斷服務(wù)程序時,CPU硬件會將全局中斷使能位關(guān)閉。為了實(shí) 現(xiàn)中斷嵌套,必須在ISR開始重新允許全局中斷(在有多優(yōu)先級的情 況下,選擇允許到哪一個級別的中斷)。 中斷嵌套的層數(shù) 中斷嵌套對堆棧的消耗很大 Page 34 Normal Process External event ISR ISR STACK External event 5.1 單片機(jī)中斷 中斷工作流程 中斷嵌套時的堆棧:

溫馨提示

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

評論

0/150

提交評論