MC9S12系列中斷系統(tǒng)課件_第1頁(yè)
MC9S12系列中斷系統(tǒng)課件_第2頁(yè)
MC9S12系列中斷系統(tǒng)課件_第3頁(yè)
MC9S12系列中斷系統(tǒng)課件_第4頁(yè)
MC9S12系列中斷系統(tǒng)課件_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、MC9S12XS單片機(jī)原理及嵌入式系統(tǒng)開發(fā)MC9S12XS單片機(jī)原理及嵌入式系統(tǒng)開發(fā)MC9S12XS單片機(jī)原理及嵌入式系統(tǒng)開發(fā)合肥工業(yè)大學(xué) MC9S12XS單片機(jī)原理及嵌入式系統(tǒng)開發(fā)第6章 MC9S12系列中斷系統(tǒng) MC9S12系列中斷系統(tǒng)概述 MC9S12系列中斷優(yōu)先級(jí) MC9S12系列中斷程序應(yīng)用實(shí)例 MC9S12XS單片機(jī)原理及嵌入式系統(tǒng)開發(fā)前言 中斷是用以提高計(jì)算機(jī)工作效率的一種重要技術(shù),最初它只是作為計(jì)算機(jī)與外設(shè)交換信息的一種同步控制方式而提出的,但隨著計(jì)算機(jī)技術(shù)的發(fā)展,特別是CPU速度的迅速提高,對(duì)計(jì)算機(jī)內(nèi)部機(jī)制的要求也越來(lái)越高,希望計(jì)算機(jī)能隨時(shí)發(fā)現(xiàn)各種錯(cuò)誤,當(dāng)系統(tǒng)出現(xiàn)意想不到的事

2、件時(shí),能及時(shí)妥善處理。于是,中斷的概念得以延伸,除了傳統(tǒng)的外部事件(硬件)引起的中斷事件外,還有CPU內(nèi)部軟件中斷的概念。所謂中斷,是指CPU在正常執(zhí)行程序的過(guò)程中,由于內(nèi)部/外部事件或由程序的預(yù)先安排,引起了CPU暫時(shí)中斷當(dāng)前程序的運(yùn)行,而轉(zhuǎn)去執(zhí)行由內(nèi)部/外部事件或預(yù)先安排的時(shí)間而需要執(zhí)行的中斷服務(wù)子程序,在中斷服務(wù)子程序執(zhí)行完畢后,CPU再重新回來(lái)執(zhí)行當(dāng)前的程序。利用中斷可以大大提高CPU的工作效率。實(shí)現(xiàn)中斷功能的控制邏輯稱為中斷機(jī)構(gòu)或中斷系統(tǒng)。MC9S12XS單片機(jī)原理及嵌入式系統(tǒng)開發(fā)前言 盡管單片機(jī)或者微控制器中的中斷系統(tǒng)各不相同,但中斷系統(tǒng)的基本功能是相同的: 能實(shí)現(xiàn)中斷響應(yīng)、中斷處

3、理(服務(wù))、中斷返回和中斷屏蔽; 能實(shí)現(xiàn)中斷優(yōu)先級(jí)排隊(duì)(管理); 能實(shí)現(xiàn)中斷嵌套。 MC9S12XS單片機(jī)原理及嵌入式系統(tǒng)開發(fā)6.1 MC9S12系列中斷系統(tǒng)概述 MC9S12系列MCU的中斷屬于異常情況處理的一部分,異常情況處理還包括復(fù)位,所以本章除論述MC9S12系列MCU的中斷系統(tǒng),也簡(jiǎn)要介紹MC9S12系列MCU的幾種復(fù)位情況。正常情況下,MCU有序的執(zhí)行相應(yīng)程序,按照明確的獲取-解碼-執(zhí)行的方式順序處理各種指令。程序計(jì)數(shù)器記錄了下一條程序指令位于內(nèi)存中的位置,即使當(dāng)程序?yàn)榱讼鄳?yīng)分支或跳轉(zhuǎn)指令而偏離了正常的順序處理,但仍然是在順序事件處理的控制范圍之內(nèi)。可能發(fā)生的異常情況會(huì)打破這種事件

4、處理的順序流,將一個(gè)正常程序流的中斷歸為一個(gè)異常情況,異常情況不一定總是和錯(cuò)誤相關(guān)聯(lián)的,中斷是在一個(gè)MCU上實(shí)現(xiàn)多個(gè)任務(wù)的有效方法。通過(guò)上面的論述可以知道,MC9S12系列程序運(yùn)行時(shí)可能發(fā)生的異??煞譃閮深悾簭?fù)位和中斷,而中斷又進(jìn)一步分為可屏蔽中斷和不可屏蔽中斷。MC9S12系列MCU的異常情況分類如圖6.1所示。MC9S12XS單片機(jī)原理及嵌入式系統(tǒng)開發(fā)6.1 MC9S12系列中斷系統(tǒng)概述 MC9S12XS單片機(jī)原理及嵌入式系統(tǒng)開發(fā)6.1 MC9S12系列中斷系統(tǒng)概述 6.1.1 復(fù)位 S12系列單片機(jī)共有四種事件可以觸發(fā)系統(tǒng)復(fù)位。(1)外部復(fù)位 S12配備一個(gè)標(biāo)記為RESET的低電平有效復(fù)

5、位引腳,當(dāng)該引腳電壓為低電平時(shí),觸發(fā)復(fù)位。(2)上電復(fù)位 在S12的VDD引腳上的一個(gè)正向變化將觸發(fā)上電復(fù)位,這意味著當(dāng)給S12上電時(shí),它以一個(gè)已知的、確定的設(shè)置啟動(dòng)。MC9S12XS單片機(jī)原理及嵌入式系統(tǒng)開發(fā)6.1 MC9S12系列中斷系統(tǒng)概述 6.1.1 復(fù)位 (3)計(jì)算機(jī)工作正常(COP)復(fù)位 COP系統(tǒng)允許MCU檢測(cè)軟件運(yùn)行故障,通常COP在軟件開發(fā)設(shè)計(jì)過(guò)程中是關(guān)閉的。但是,當(dāng)基于MC9S12系列的系統(tǒng)完全運(yùn)行后,這是一項(xiàng)重要的安全保障功能之一。COP系統(tǒng)包含一個(gè)用戶設(shè)置的定時(shí)器,一旦定時(shí)器超時(shí),則觸發(fā)系統(tǒng)復(fù)位。為了防止定時(shí)器超時(shí),執(zhí)行的程序必須在定時(shí)器超時(shí)之前,向ARMCOP寄存器中

6、依次寫入$55和$AA。若某個(gè)程序陷入一個(gè)死循環(huán),它將不能按照上述要求對(duì)ARMCOP寄存器進(jìn)行操作,因此將會(huì)產(chǎn)生COP復(fù)位。為了有效地實(shí)現(xiàn)這個(gè)功能,向ARMCOP寄存器中寫入$55的代碼應(yīng)該有策略的分布在程序的重要部分,寫入$AA的代碼則可以放在程序的其他部分。這樣,一旦MCU在某代碼處運(yùn)行失效,將不會(huì)產(chǎn)生需要的代碼序列($55或$AA),這樣就會(huì)觸發(fā)COP復(fù)位??梢栽诔绦蛟O(shè)計(jì)中設(shè)置多對(duì)$55和$AA,實(shí)現(xiàn)錯(cuò)誤恢復(fù)功能。MC9S12XS單片機(jī)原理及嵌入式系統(tǒng)開發(fā)6.1 MC9S12系列中斷系統(tǒng)概述 6.1.1 復(fù)位 (4)時(shí)鐘監(jiān)控復(fù)位 當(dāng)系統(tǒng)時(shí)鐘頻率低于某個(gè)預(yù)設(shè)置值或停止工作時(shí),將觸發(fā)時(shí)鐘監(jiān)控

7、復(fù)位。 當(dāng)上述事件觸發(fā)復(fù)位時(shí),S12單片機(jī)在程序計(jì)數(shù)器中放置一個(gè)復(fù)位向量,處理器執(zhí)行啟動(dòng)例程。COP復(fù)位和時(shí)鐘監(jiān)控復(fù)位具有各自的復(fù)位向量。MC9S12XS單片機(jī)原理及嵌入式系統(tǒng)開發(fā)6.1 MC9S12系列中斷系統(tǒng)概述 6.1.2 中斷 MC9S12系列MCU的中斷分為可屏蔽中斷和不可屏蔽中斷。MCU有一個(gè)條件代碼寄存器(CCR),如圖6.2所示,其中的X位和I位與中斷相關(guān),X位是不可屏蔽中斷的屏蔽位,置為“1”則關(guān)閉不可屏蔽中斷,置為“0”則允許不可屏蔽中斷;I位是可屏蔽中斷的屏蔽位,置為“1” 則關(guān)閉可屏蔽中斷,置為“0”則允許可屏蔽中斷。在系統(tǒng)復(fù)位時(shí),CCR這些中斷屏蔽位默認(rèn)為“1”,所以

8、MCU復(fù)位后,不可屏蔽中斷和可屏蔽中斷都處于關(guān)閉狀態(tài)。MC9S12XS單片機(jī)原理及嵌入式系統(tǒng)開發(fā)6.1 MC9S12系列中斷系統(tǒng)概述 6.1.2 中斷 1不可屏蔽中斷 不可屏蔽中斷包括軟件中斷、非法指令陷阱和XIRQ中斷,下面簡(jiǎn)要介紹常用的幾個(gè)不可屏蔽中斷。 (1)軟件中斷 SWI實(shí)質(zhì)上是一條指令,但其執(zhí)行過(guò)程與中斷相同,即通過(guò)中斷矢量確定目標(biāo)地址,中斷矢量為$FFF6$FFF7,它自動(dòng)保存MCU的寄存器和返回地址,最后必須通過(guò)RTI指令返回。 (2)非法指令陷阱 MCU正常工作時(shí),每次獲得的都是由匯編或編譯程序生成的有效操作碼,MCU能夠正確解釋并執(zhí)行它們,但當(dāng)受到干擾或系統(tǒng)出現(xiàn)混亂時(shí),可能

9、得到無(wú)法識(shí)別的操作碼,即非法指令,這時(shí)MCU自動(dòng)產(chǎn)生一次中斷,中斷矢量地址為$FFF8$FFF9。MC9S12XS單片機(jī)原理及嵌入式系統(tǒng)開發(fā)6.1 MC9S12系列中斷系統(tǒng)概述 6.1.2 中斷 1不可屏蔽中斷 (3)XIRQ XIRQ是非屏蔽中斷引腳,無(wú)論MCU處于哪種運(yùn)行狀態(tài),該引腳一旦被拉成低電平,MCU執(zhí)行完當(dāng)前指令后,都會(huì)響應(yīng)該中斷,中斷矢量為$FFF4$FFF5。該中斷一般用于系統(tǒng)掉電檢測(cè)、硬件故障等重要事件處理,當(dāng)MCU處于等待或暫停模式時(shí),該中斷將喚醒MCU。MC9S12XS單片機(jī)原理及嵌入式系統(tǒng)開發(fā)6.1 MC9S12系列中斷系統(tǒng)概述 6.1.2 中斷 2可屏蔽中斷 可屏蔽中

10、斷可以在程序控制下由用戶開啟或者關(guān)閉??善帘沃袛嗟拈_關(guān)是條件代碼寄存器(CCR)中的I位。通過(guò)清除I可以開啟可屏蔽中斷。S12系列單片機(jī)中的可屏蔽中斷數(shù)量非常多,這里僅對(duì)IRQ做簡(jiǎn)要介紹,其他的可屏蔽中斷可參見相關(guān)功能模塊的章節(jié)。 MC9S12系列MCU有一個(gè)標(biāo)記為 IRQ 引腳,當(dāng)該引腳出現(xiàn)低電平或者下降沿時(shí),則會(huì)產(chǎn)生中斷請(qǐng)求信號(hào),這也是MCU接受外部事件中斷的主要手段。IRQ控制寄存器(IRQCR)和 IRQ 的中斷設(shè)置相關(guān),如圖6.3所示。MC9S12XS單片機(jī)原理及嵌入式系統(tǒng)開發(fā)6.1 MC9S12系列中斷系統(tǒng)概述 6.1.2 中斷 通過(guò)該寄存器中的IRQE位和IRQEN位對(duì)IRQ中斷

11、進(jìn)行設(shè)置。IRQE:中斷電平/邊沿有效選擇: 0表示IRQ引腳配置為低電平有效; 1表示IRQ引腳配置為下降沿有效。IRQEN:外部IRQ中斷請(qǐng)求使能: 0表示IRQ中斷關(guān)閉; 1表示IRQ中斷允許。MC9S12XS單片機(jī)原理及嵌入式系統(tǒng)開發(fā)6.1 MC9S12系列中斷系統(tǒng)概述 6.1.2 中斷 3中斷堆棧操作順序 因?yàn)橹袛囗憫?yīng)過(guò)程中,會(huì)有隱含的堆棧操作,所以中斷響應(yīng)前,堆棧必須有效,即堆棧指針SP必須指向一個(gè)有效的RAM區(qū),而且堆棧的大小必須不少于9個(gè)字節(jié)。中斷響應(yīng)堆棧操作如表6-1所示。MC9S12XS單片機(jī)原理及嵌入式系統(tǒng)開發(fā)6.2 MC9S12系列中斷優(yōu)先級(jí) MC9S12系列有多個(gè)中斷

12、源,所以在同一時(shí)刻可能會(huì)有兩個(gè)或兩個(gè)以上的中斷源同時(shí)請(qǐng)求中斷,這就要求必須根據(jù)任務(wù)的輕重緩急給每個(gè)中斷源分配不同的中斷優(yōu)先級(jí)。當(dāng)兩個(gè)或兩個(gè)以上中斷源同時(shí)發(fā)生時(shí),優(yōu)先級(jí)高的中斷將先被處理。一般來(lái)說(shuō),不可屏蔽中斷的優(yōu)先級(jí)高于可屏蔽中斷的優(yōu)先級(jí)。復(fù)位以及不可屏蔽中斷的優(yōu)先級(jí)從高到低依次為:MC9S12XS單片機(jī)原理及嵌入式系統(tǒng)開發(fā)6.2 MC9S12系列中斷優(yōu)先級(jí) MC9S12XS單片機(jī)原理及嵌入式系統(tǒng)開發(fā)6.2 MC9S12系列中斷優(yōu)先級(jí) MC9S12XS單片機(jī)原理及嵌入式系統(tǒng)開發(fā)6.2 MC9S12系列中斷優(yōu)先級(jí) MC9S12XS單片機(jī)原理及嵌入式系統(tǒng)開發(fā)6.2 MC9S12系列中斷優(yōu)先級(jí) MC

13、9S12系列默認(rèn)的中斷處理機(jī)制如圖6.4所示。從圖中可以看到,MC9S12系列默認(rèn)狀態(tài)下在進(jìn)入中斷服務(wù)程序時(shí),CCR中的I位自動(dòng)置1,所以禁止響應(yīng)其他可屏蔽中斷,盡管在處理中斷A的服務(wù)程序過(guò)程中又來(lái)了更高級(jí)別的中斷B的中斷請(qǐng)求,MCU也無(wú)法及時(shí)處理高優(yōu)先級(jí)B中斷,必須等待當(dāng)前A中斷服務(wù)程序執(zhí)行完以后才能響應(yīng)高優(yōu)先級(jí)B中斷MC9S12XS單片機(jī)原理及嵌入式系統(tǒng)開發(fā)6.2 MC9S12系列中斷優(yōu)先級(jí) 如果希望在MC9S12系列中實(shí)現(xiàn)中斷嵌套,一個(gè)比較簡(jiǎn)單的方法是進(jìn)入中斷服務(wù)程序時(shí),將CCR中的可屏蔽中斷屏蔽位I清零。這樣可以實(shí)現(xiàn)如圖6.5所示的中斷嵌套。MC9S12XS單片機(jī)原理及嵌入式系統(tǒng)開發(fā)6

14、.2 MC9S12系列中斷優(yōu)先級(jí) 從圖6.5中可以看到,這樣簡(jiǎn)單的CCR中的I位處理也可能會(huì)帶來(lái)問(wèn)題,就是會(huì)出現(xiàn)低優(yōu)先級(jí)的中斷請(qǐng)求也可以掛起高優(yōu)先級(jí)中斷服務(wù)程序。因?yàn)樵谑紫软憫?yīng)B中斷服務(wù)程序中已經(jīng)清除了可屏蔽中斷屏蔽位I,所以此時(shí)任何可屏蔽中斷請(qǐng)求都能夠得到響應(yīng),這樣就出現(xiàn)了低優(yōu)先級(jí)的中斷A打斷高優(yōu)先級(jí)B中斷服務(wù)程序的情況。為了解決這個(gè)問(wèn)題,可以只在A中斷服務(wù)程序中清除可屏蔽中斷屏蔽位I,而在B中斷服務(wù)程序中對(duì)CCR中的I位不做處理,這樣就可以得到如圖6.6所示的中斷處理機(jī)制,即只存在高優(yōu)先級(jí)的中斷請(qǐng)求打斷低優(yōu)先級(jí)中斷服務(wù)程序的情況。MC9S12XS單片機(jī)原理及嵌入式系統(tǒng)開發(fā)6.3 MC9S1

15、2系列中斷程序應(yīng)用實(shí)例 本實(shí)例硬件連接如圖6.7所示,PORTA端口與1個(gè)8位撥碼開關(guān)連接,PORTB端口與8只LED連接,IRQ引腳與一個(gè)按鍵連接,按鍵按下為低電平。要求編程實(shí)現(xiàn)IRQ作為中斷源,采用中斷方式,利用8位撥碼開關(guān)控制8只LED燈的循環(huán)點(diǎn)亮速度,撥碼開關(guān)的不同狀態(tài)設(shè)置了燈的循環(huán)點(diǎn)亮速度值。MC9S12XS單片機(jī)原理及嵌入式系統(tǒng)開發(fā)6.3 MC9S12系列中斷程序應(yīng)用實(shí)例 本實(shí)例中關(guān)于流水燈的實(shí)現(xiàn)已經(jīng)在第5章中介紹過(guò),本章著重介紹中斷服務(wù)程序的編寫。中斷服務(wù)程序可以有兩種編寫方式:一種是利用中斷編號(hào)關(guān)聯(lián)中斷服務(wù)程序;另一種是通過(guò)在.prm文件中的聲明關(guān)聯(lián)中斷服務(wù)程序。首先介紹利用中

16、斷編號(hào)編寫中斷服務(wù)程序。從表6.2中可以看到,中斷向量表依次自上而下從0開始編號(hào), 中斷在表格中是第7個(gè),所以編號(hào)為“6”。另外一種比較方便確定編號(hào)的方法是,可以打開工程中“Includes”文件夾下的“MC9S12XS128.h”文件,頭文件的開始處對(duì)所有中斷向量地址和中斷標(biāo)號(hào)都做了宏定義, 中斷的中斷向量入口地址的宏定義語(yǔ)句為“#define Virq 0 xFFF2U”, 中斷的中斷標(biāo)號(hào)的宏定義語(yǔ)句為“#define VectorNumber_Virq 6U”,所以也可以用“VectorNumber_Virq”代替前文中提到的編號(hào)“6”。下面是部分實(shí)例程序代碼。MC9S12XS單片機(jī)原理及嵌入式系統(tǒng)開發(fā)6.3 MC9S12系列中斷程序應(yīng)用實(shí)例 MC9S12XS單片機(jī)原理及嵌入式系統(tǒng)開發(fā)6.3 MC9S12系列中斷程序應(yīng)用實(shí)例 MC9S12XS單片機(jī)原理及嵌入式系統(tǒng)開發(fā)6.3 MC9S12系列中斷程序應(yīng)用實(shí)例 MC9S12

溫馨提示

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

評(píng)論

0/150

提交評(píng)論