版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第3章 程序控制和中斷管理 程序控制是指CPU對(duì)程序運(yùn)轉(zhuǎn)的控制通常程序是順序執(zhí)行的,即在延續(xù)的程序存儲(chǔ)器地址上取指并執(zhí)行。但有時(shí)程序需求轉(zhuǎn)移到不延續(xù)的地址,然后再延續(xù)執(zhí)行新地址處的指令。TMS320C2000中影響程序控制操作的指令有:分支轉(zhuǎn)移調(diào)用與前往反復(fù)指令中斷復(fù)位.4.1 程序地址的產(chǎn)生 在執(zhí)行當(dāng)前指令的同時(shí),程序流要求處置器生成下一條指令的程序地址。 它是順序或非順序的。程序地址產(chǎn)生邏輯運(yùn)用以下硬件:1程序計(jì)數(shù)器(PC): C2000為16位PC。2程序地址存放器(PAR):驅(qū)動(dòng)程序地址總線(PAB),提供程序的讀、寫地址。3堆棧:16位寬、8級(jí)硬件堆棧最多可保管8個(gè)前往地址。4微堆棧
2、(MSTACK):16位,1級(jí)深的堆棧,用于保管一個(gè)前往地址。5反復(fù)計(jì)數(shù)器(RPTC):16位,與反復(fù)指令(RPT)一同,用來確定RPT后面的一條指令反復(fù)執(zhí)行次數(shù)。.一、程序計(jì)數(shù)器(PC) 程序計(jì)數(shù)器(PC)存放將被執(zhí)行的下一條指令的地址。 影響PC加載方式的程序控制操作:1復(fù)位 2順序執(zhí)行 3分支轉(zhuǎn)移 4由累加器轉(zhuǎn)移 5子程序調(diào)用與前往 6從累加器調(diào)用與前往 7軟件或硬件中斷 加載到PC的地址:PC = 0000h (復(fù)位向量地址).一、程序計(jì)數(shù)器(PC) 程序計(jì)數(shù)器(PC)存放將被執(zhí)行的下一條指令的地址。PC的加載方式:1復(fù)位 2順序執(zhí)行 3分支轉(zhuǎn)移 4由累加器轉(zhuǎn)移 5子程序調(diào)用與前往 6
3、從累加器調(diào)用與前往 7軟件或硬件中斷 加載到PC的地址: PC = PC + 1例: PC 目的代碼 指令0108 be42 CLRC OVM0109 bd00 LDP #0010a .一、程序計(jì)數(shù)器(PC) 程序計(jì)數(shù)器(PC)存放將被執(zhí)行的下一條指令的地址。PC的加載方式:1復(fù)位 2順序執(zhí)行 3分支轉(zhuǎn)移 4由累加器轉(zhuǎn)移 5子程序調(diào)用與前往 6從累加器調(diào)用與前往 7軟件或硬件中斷 加載到PC的地址:PC = 轉(zhuǎn)移指令之后16位立刻數(shù)例: B pma .一、程序計(jì)數(shù)器(PC) 程序計(jì)數(shù)器(PC)存放將被執(zhí)行的下一條指令的地址。PC的加載方式:1復(fù)位 2順序執(zhí)行 3分支轉(zhuǎn)移 4由累加器轉(zhuǎn)移 5子程
4、序調(diào)用與前往 6從累加器調(diào)用與前往 7軟件或硬件中斷 加載到PC的地址:PC = 累加器的低16位值例: BACC.一、程序計(jì)數(shù)器(PC) 程序計(jì)數(shù)器(PC)存放將被執(zhí)行的下一條指令的地址。PC的加載方式:1復(fù)位 2順序執(zhí)行 3分支轉(zhuǎn)移 4由累加器轉(zhuǎn)移 5子程序調(diào)用與前往 6從累加器調(diào)用與前往 7軟件或硬件中斷 調(diào)用:將PC中下一條指令的地址壓入堆棧, 將調(diào)用指令后的16位立刻數(shù)裝入PC;前往: 將前往地址從堆棧中彈回PC。例: PC 指令0100 CALL 01e0h0102 .一、程序計(jì)數(shù)器(PC) 程序計(jì)數(shù)器(PC)存放將被執(zhí)行的下一條指令的地址。PC的加載方式:1復(fù)位 2順序執(zhí)行 3分
5、支轉(zhuǎn)移 4由累加器轉(zhuǎn)移 5子程序調(diào)用與前往 6從累加器調(diào)用與前往 7軟件或硬件中斷 調(diào)用: 將PC中下一條指令的地址壓入堆棧,將累加器中的低16位數(shù)裝入PC; 前往: 將前往地址從堆棧中彈回PC。例: PC 指令0100 CALA 0101 .一、程序計(jì)數(shù)器(PC) 程序計(jì)數(shù)器(PC)存放將被執(zhí)行的下一條指令的地址。PC的加載方式:1復(fù)位 2順序執(zhí)行 3分支轉(zhuǎn)移 4由累加器轉(zhuǎn)移 5子程序調(diào)用與前往 6從累加器調(diào)用與前往 7軟件或硬件中斷 將PC壓入堆棧,然后用適當(dāng)?shù)闹袛嘞蛄繂卧刂费b入PC。通常在該單元地址中存放一條轉(zhuǎn)移指令,又將相應(yīng)的中斷效力子程序地址裝入PC。例: INT2 產(chǎn)生中斷000
6、4ff80B 1000h10000108be42CLRCOVM0109bd00LDP#0010a8b8fMAR*,AR7010bb93fLACL#3Fh呼應(yīng)中斷PC=010ah壓入堆棧.一、程序計(jì)數(shù)器(PC) 程序計(jì)數(shù)器(PC)存放將被執(zhí)行的下一條指令的地址。PC的加載方式:1復(fù)位 2順序執(zhí)行 3分支轉(zhuǎn)移 4由累加器轉(zhuǎn)移 5子程序調(diào)用與前往 6從累加器調(diào)用與前往 7軟件或硬件中斷 將PC壓入堆棧,然后用適當(dāng)?shù)闹袛嘞蛄繂卧刂费b入PC。通常在該單元地址中存放一條轉(zhuǎn)移指令,又將相應(yīng)的中斷效力子程序地址裝入PC。例: INT2 產(chǎn)生中斷0004ff80B 1000h10000108be42CLRCO
7、VM0109bd00LDP#0010a8b8fMAR*,AR7010bb93fLACL#3Fh 中斷向量0004h裝入PC.一、程序計(jì)數(shù)器(PC) 程序計(jì)數(shù)器(PC)存放將被執(zhí)行的下一條指令的地址。PC的加載方式:1復(fù)位 2順序執(zhí)行 3分支轉(zhuǎn)移 4由累加器轉(zhuǎn)移 5子程序調(diào)用與前往 6從累加器調(diào)用與前往 7軟件或硬件中斷 將PC壓入堆棧,然后用適當(dāng)?shù)闹袛嘞蛄繂卧刂费b入PC。通常在該單元地址中存放一條轉(zhuǎn)移指令,又將相應(yīng)的中斷效力子程序地址裝入PC。例: INT2 產(chǎn)生中斷0004ff80B 1000h10000108be42CLRCOVM0109bd00LDP#0010a8b8fMAR*,AR7
8、010bb93fLACL#3Fh轉(zhuǎn)移指令1000h裝入PC.二、堆棧硬件堆棧區(qū):16位寬、8級(jí)深。用途: 當(dāng)調(diào)用子程序或發(fā)生中斷時(shí),程序地址產(chǎn)生邏輯利用該堆棧保管一個(gè)16位前往地址。當(dāng)CPU進(jìn)入子程序或中斷效力程序時(shí),前往地址自動(dòng)裝入該堆棧的棧頂。當(dāng)子程序或中斷效力程序完成時(shí),前往指令將前往地址從棧頂傳送到程序計(jì)數(shù)器PC。堆棧也可以用來保管數(shù)據(jù)或用于其他目的。 .有兩組訪問堆棧的指令:1PUSH和POP: PUSH:把累加器(32位)的低半部分(低16位)拷貝到棧頂。POP: 把棧頂?shù)闹悼截惖嚼奂悠鞯牡桶氩糠?PSHD和POPD: 當(dāng)子程序或中斷嵌套超越8級(jí)時(shí),可利用這兩條指令在數(shù)據(jù)存儲(chǔ)區(qū)中建
9、立一個(gè)堆棧。 即把堆棧區(qū)延伸到數(shù)據(jù)存儲(chǔ)區(qū)。PSHD dma ;將數(shù)據(jù)存儲(chǔ)器中的值壓入棧頂。POPD dma ; 將棧項(xiàng)的值彈出到數(shù)據(jù)存儲(chǔ)器。.每當(dāng)一個(gè)數(shù)值壓入棧頂 ,堆棧中每級(jí)的內(nèi)容都下移一級(jí),棧底(第8級(jí))的內(nèi)容那么喪失。 PSHD dma .彈出操作把堆棧中每一級(jí)的值都拷貝到較高的下一級(jí)。 操作與壓入操作相反, POPD dma .三、微堆棧(MSTACK)微堆棧共有1級(jí)深、16位寬,與堆棧不同,它的操作是不可見的。 執(zhí)行以下指令時(shí),程序地址產(chǎn)生邏輯,利用微堆棧保管前往地址。塊傳送 BLDD BLPD乘且累加 MAC、MACD 表讀寫 TBLD、TBLW 例:RPT#9BLDD #lk,
10、*+ 源地址 目的地址操作過程: 執(zhí)行 PC+1,然后PCMSTACK lk源地址 PC 源地址 目的地址 PC+1 PC 利用反復(fù)指令,進(jìn)展數(shù)據(jù)塊傳送,直到反復(fù)計(jì)數(shù)器(RPTC)=0;MSTACK PC.四、流水線操作 TMS320C2000的流水線有4個(gè)獨(dú)立的階段: 取指令 指令譯碼 取操作數(shù) 執(zhí)行指令由于這4個(gè)操作階段是獨(dú)立的,因此,這些操作可以重疊進(jìn)展。在恣意的指定周期內(nèi),1 - 4個(gè)不同的指令均被激活,每一條被激活的指令均處于一個(gè)不同的完成階段。對(duì)于單字、單周期指令(無等待形狀),4級(jí)流水線的操作表示圖如下:.4.2 轉(zhuǎn)移、調(diào)用和前往 轉(zhuǎn)移、調(diào)用和前往將改動(dòng)指令流的順序,轉(zhuǎn)到新的地址
11、單元去執(zhí)行指令。轉(zhuǎn)移:僅使程序控制轉(zhuǎn)換到新的地址單元。 采用跳轉(zhuǎn)指令調(diào)用: 子程序調(diào)用 中斷效力程序 要將前往地址保管到硬件堆棧的棧頂。 被調(diào)用的子程序或中斷效力程序都以前往指令終了。轉(zhuǎn)移、調(diào)用和前往指令的類型:無條件轉(zhuǎn)移、調(diào)用和前往 有條件轉(zhuǎn)移、調(diào)用和前往 .一、無條件指令無條件轉(zhuǎn)移指令 B pma ;用指令中給定的地址pma 裝載PC BACC ;用累加器中低16位數(shù)值A(chǔ)CC015裝載PC無條件調(diào)用指令 CALL pma ;將前往地址壓入堆棧,用pma 裝載PC CALA ;將前往地址壓入堆棧,用ACC015裝載PC無條件前往指令 RET ;將棧頂?shù)闹?前往地址)加載到PC.二、有條件指令
12、 有條件指令指僅當(dāng)某些指定的條件滿足時(shí)才執(zhí)行。 條件及符號(hào) . 條件的組合:在條件指令的操作數(shù)中可以有多個(gè)條件。留意:某些條件只需組合才是有意義的。 對(duì)于每一種組合,必需按如下規(guī)那么從組1和組2中選擇條件。 同一類的條件不能組合。.有條件指令 條件轉(zhuǎn)移指令 BCND pma,cond1,cond2, ;條件cond1,cond2都滿足時(shí)轉(zhuǎn)移。例: BCND PGM1,LEQ, OV BANZ pma ;當(dāng)前AR0時(shí),轉(zhuǎn)移。條件調(diào)用指令 CC pma,cond1,cond2, ;條件cond1,cond2都滿足時(shí)調(diào)用。例: CC 00BFh,LEQ, OV條件前往指令 RETCcond1,con
13、d2, ;條件cond1,cond2都滿足時(shí)前往。.4.3 反復(fù)指令 反復(fù)指令(RPT)允許緊跟在RPT后的那一條指令反復(fù)執(zhí)行N+1。 N為RRT指令中的一個(gè)操作數(shù)。在執(zhí)行RPT時(shí),計(jì)數(shù)值N被裝入反復(fù)計(jì)數(shù)器(RPTC),然后,被反復(fù)的指令每執(zhí)行一次,RPTC就減1,直至RPTC為0。例:指令執(zhí)行前存放器形狀: ARP = 1;AR1 = 300h執(zhí)行指令: RPT #9 ;下一條指令執(zhí)行10次 BLDD#320h, *+上面的指令執(zhí)行結(jié)果: 將數(shù)據(jù)存儲(chǔ)器: 0320h032Ah單元的內(nèi)容-0300h030Ah中.4.4 中斷中斷是由軟件或硬件產(chǎn)生一個(gè)信號(hào),該信號(hào)引起CPU掛起主程序,并轉(zhuǎn)而執(zhí)行
14、一個(gè)子程序,即中斷效力子程序。一、概述 1中斷信號(hào)的產(chǎn)生: C2000支持軟件和硬件兩種中斷。 軟件中斷: 由中斷指令I(lǐng)NTR,NMI或TRAP懇求。 硬件中斷: 外部中斷由外部中斷引腳上的信號(hào)觸發(fā),如: RS , NMI 內(nèi)部中斷由片內(nèi)外設(shè)的信號(hào)觸發(fā)。.2) 中斷優(yōu)先級(jí)硬件中斷能夠同時(shí)產(chǎn)生,CPU根據(jù)中斷源的優(yōu)先級(jí)順序而執(zhí)行相應(yīng)的中斷效力子程序。C240X的硬件中斷分為兩級(jí): CPU中斷8個(gè)中心級(jí) 外設(shè)中斷 46個(gè),分別掛在CPU中斷中 6個(gè) 可屏蔽中斷之下。CPU中斷優(yōu)先級(jí)為1-RESET;復(fù)位中斷2-保管3-NMI;不可屏蔽中斷4-INT1 ;可屏蔽中斷5-INT2 ;可屏蔽中斷6-IN
15、T3 ;可屏蔽中斷7-INT4 ;可屏蔽中斷8-INT5 ;可屏蔽中斷9-INT6 ;可屏蔽中斷.3可屏蔽中斷與不可屏蔽中斷 可屏蔽中斷:指可以用軟件設(shè)置使它們制止(屏蔽)或允許不屏蔽)的中斷,可屏蔽中斷均為硬件中斷。 C240X的可屏蔽中斷為INT1INT6, 這些中斷源下面掛著外設(shè)和外部引腳,如: ADC、SPI、SCI、事件管理器等。 不可屏蔽中斷:包括: 一切的軟件中斷 兩種外部硬件中斷: RS , NMI )。對(duì)于不可屏蔽中斷,CPU總是要呼應(yīng),并從主程序轉(zhuǎn)移到相應(yīng)中斷效力程序。 .4中斷矢量 中斷矢量指CPU呼應(yīng)中斷后,PC裝載的地址 。MS320C2000器件CPU中斷的中斷矢量
16、表安排在程序存儲(chǔ)器地址為0000h003Fh的64個(gè)單元。每個(gè)CPU中斷分配了兩個(gè)地址單元,用以存放一條兩個(gè)字的轉(zhuǎn)移指令。外設(shè)中斷的中斷矢量放在外設(shè)中斷矢量存放器(PIVR) 中中斷名稱中斷矢量RESET復(fù)位0000h保留位0026hNMI0024hINT10002hINT20004hINT30006hINT40008hINT5000AhINT6000Ch保留位000EhTRAP0022hINT8-INT160010h-0020hINT20-INT310028h-003Fh.5中斷操作步驟TMS320C2000管理中斷分為3個(gè)主要階段: (1)接受中斷懇求: 來自程序代碼的軟件中斷懇求、來自引
17、腳或片內(nèi)設(shè)備硬件中斷懇求到達(dá)CPU 時(shí),該中斷掛起,或說在等待呼應(yīng)。 (2)呼應(yīng)中斷: 假設(shè)是可屏蔽中斷,那么必需滿足一定的條件時(shí)CPU才會(huì)呼應(yīng);對(duì)非屏蔽中斷那么立刻呼應(yīng)。 (3)執(zhí)行中斷效力程序: 一旦中斷被呼應(yīng),CPU就根據(jù)放在中斷矢量地址中的轉(zhuǎn)移指令,按照要求轉(zhuǎn)移到相應(yīng)的中斷效力程序中去執(zhí)行。執(zhí)行終了后前往。 對(duì)于中斷的管理,TMS320C2000系列中不同型號(hào)的芯片有許多不同之處。以下以LC/LF240X為例。.二、可屏蔽中斷 1構(gòu)造 LF/LC240X器件的CPU提供了6個(gè)可屏蔽中斷,INT1-INT6。 利用這6個(gè)中斷級(jí),經(jīng)過擴(kuò)展設(shè)計(jì),使得C240X器件可以管理46個(gè)可屏蔽中斷懇求
18、。.2中斷管理存放器 CPU中斷存放器 外設(shè)中斷存放器1CPU中斷存放器: 用于管理CPU中斷INT1-INT6: 中斷標(biāo)志存放器(IFR) 中斷屏蔽存放器(IMR) CPU中斷標(biāo)志存放器(IFR)地址0006h 用于識(shí)別和去除掛起的中斷,當(dāng)INT1-INT6中某一個(gè)中斷向CPU發(fā)出中斷懇求時(shí),該存放器中相應(yīng)的位被置1。 讀取IFR可以識(shí)別掛起的中斷,而向相應(yīng)的位寫1去除己掛起的中斷。 CPU呼應(yīng)中斷或器件復(fù)位都能將IFR標(biāo)志去除。.CPU中斷屏蔽存放器(IMR)地址0004h向IMR中某位寫1,那么屏蔽相應(yīng)的中斷級(jí),寫1那么使能該中斷級(jí)。 .2外設(shè)中斷存放器: 用于管理掛在內(nèi)核級(jí)中斷 INT
19、1-INT6 下的46個(gè)外設(shè)中斷。 包括: 一個(gè)外設(shè)中斷矢量存放器 (PIVR)、 三個(gè)外設(shè)中斷懇求存放器 (PIRQR0/1/2) 三個(gè)外設(shè)中斷應(yīng)對(duì)存放器 (PIACKR0/1/2) 外設(shè)中斷矢量存放器(PIVR)地址701Eh 用于存放最近一次被呼應(yīng)的外設(shè)中斷的矢量地址。 二級(jí)中斷矢量地址.2外設(shè)中斷存放器: 用于管理掛在內(nèi)核級(jí)中斷 INT1-INT6 下的46個(gè)外設(shè)中斷。 包括: 一個(gè)外設(shè)中斷矢量存放器 (PIVR)、 三個(gè)外設(shè)中斷懇求存放器 (PIRQR0/1/2) 三個(gè)外設(shè)中斷應(yīng)對(duì)存放器 (PIACKR0/1/2) 外設(shè)中斷懇求存放器0/1/2(PIRQR0/1/2)地址7010h7
20、012h 用于存放外設(shè)中斷懇求標(biāo)志: 1-闡明相應(yīng)的中斷懇求被掛起 0-闡明相應(yīng)的中斷懇求未被掛起。 只能對(duì)其測試可讀,不能對(duì)其編程不可寫 向某位寫入1將發(fā)出個(gè)中斷懇求到器件CPU,寫入0沒影響。.2外設(shè)中斷存放器: 用于管理掛在內(nèi)核級(jí)中斷 INT1-INT6 下的46個(gè)外設(shè)中斷。 包括: 一個(gè)外設(shè)中斷矢量存放器 (PIVR)、 三個(gè)外設(shè)中斷懇求存放器 (PIRQR0/1/2) 三個(gè)外設(shè)中斷應(yīng)對(duì)存放器 (PIACKR0/1/2) 外設(shè)中斷應(yīng)對(duì)存放器0/1/2(PIACKR0/1/2)地址:7014h7016h 用于存放外設(shè)中斷應(yīng)對(duì)信號(hào)只能對(duì)其測試可讀,不能對(duì)其編程不可寫向某位寫1,將引起相應(yīng)的
21、外設(shè)中斷應(yīng)對(duì)被插入從而將相應(yīng)的外設(shè)中斷懇求位清0,但不改動(dòng)外設(shè)矢量存放器(PIVR)的內(nèi)容。.3外設(shè)中斷控制存放器2個(gè)用來控制和監(jiān)視兩個(gè)外部引腳XINTl和XINT2的形狀。 外設(shè)中斷l(xiāng)控制存放器(XINTlCR)一地址7070h 控制和監(jiān)視外部引腳XINT1的形狀。 外設(shè)中斷2控制存放器(XINT2CR)一地址7071h 控制和監(jiān)視外部引腳XINT2的形狀。 D15 XINT1 flag XINTl標(biāo)志位: 該位指示在XINTl引腳上能否檢測到個(gè)眺變 0 未檢測到引腳跳變 1 檢測到引腳跳變.3外設(shè)中斷控制存放器2個(gè)用來控制和監(jiān)視兩個(gè)外部引腳XINTl和XINT2的形狀。 外設(shè)中斷l(xiāng)控制存放
22、器(XINTlCR)一地址7070h 控制和監(jiān)視外部引腳XINT1的形狀。 外設(shè)中斷2控制存放器(XINT2CR)一地址7071h 控制和監(jiān)視外部引腳XINT2的形狀。 D2 XINT1 polarity XINT1極性, 選擇在XINT1引腳產(chǎn)生中斷的信號(hào)極性。 0 在下降沿(由高到低跳變)產(chǎn)生中斷 1 在上升沿(由低到高跳變)產(chǎn)生中斷.3外設(shè)中斷控制存放器2個(gè)用來控制和監(jiān)視兩個(gè)外部引腳XINTl和XINT2的形狀。 外設(shè)中斷l(xiāng)控制存放器(XINTlCR)一地址7070h 控制和監(jiān)視外部引腳XINT1的形狀。 外設(shè)中斷2控制存放器(XINT2CR)一地址7071h 控制和監(jiān)視外部引腳XINT
23、2的形狀。 D1 XINTl priority XINT1優(yōu)先級(jí)。 該位決議XINT1引腳中斷的優(yōu)化級(jí)。 0 - 高優(yōu)先級(jí), 1 - 低優(yōu)先級(jí)留意:優(yōu)先級(jí)不同,所掛的CPU 中斷不同 高優(yōu)先級(jí): INT1 中斷向量 0002h 低優(yōu)先級(jí): INT6 中斷向量 000Ch 但外設(shè)中斷向量一樣 : XINTl: 0001h XINT2: 0011h .3外設(shè)中斷控制存放器2個(gè)用來控制和監(jiān)視兩個(gè)外部引腳XINTl和XINT2的形狀。 外設(shè)中斷l(xiāng)控制存放器(XINTlCR)一地址7070h 控制和監(jiān)視外部引腳XINT1的形狀。 外設(shè)中斷2控制存放器(XINT2CR)一地址7071h 控制和監(jiān)視外部引腳
24、XINT2的形狀。 D0 XINTl enable XINTl使能位。 該位使能或屏蔽外部中斷XINT1 0 屏蔽中斷 1 使能中斷.3外設(shè)中斷控制存放器2個(gè)用來控制和監(jiān)視兩個(gè)外部引腳XINTl和XINT2的形狀。 外設(shè)中斷l(xiāng)控制存放器(XINTlCR)一地址7070h 控制和監(jiān)視外部引腳XINT1的形狀。 外設(shè)中斷2控制存放器(XINT2CR)一地址7071h 控制和監(jiān)視外部引腳XINT2的形狀。 外設(shè)中斷2控制存放器(XINT2CR)用于控制和監(jiān)視外部引腳XINT2的形狀。 各位的定義同(XINT1CR) .3 可屏蔽中斷的呼應(yīng)流程1呼應(yīng)可屏蔽中斷,條件: 1INTM = 0 ,使能一切末
25、屏蔽的中斷; 2中斷屏蔽存放器(IMR)中相應(yīng)位為1;使能相應(yīng)的中斷; 3假設(shè)有多個(gè)中斷懇求,優(yōu)先級(jí)高的中斷源先相應(yīng)。2將PC壓入堆棧,用相應(yīng)的CPU中斷矢量單元地址裝載到PC;3CPU從相應(yīng)中斷矢量單元中取出一條用戶設(shè)定的轉(zhuǎn)移指令,然后轉(zhuǎn)入執(zhí)行這一CPU中斷的通用中斷效力程序(GISRx)。例:INT2上有一外設(shè)中斷懇求被呼應(yīng),其中斷矢量單元地址為0004h,那么在0004h單元放置一條轉(zhuǎn)移指令: 0004h B GISR2.3 可屏蔽中斷的呼應(yīng)流程4在GISRx中完成必要的現(xiàn)場維護(hù)后,從外設(shè)中斷矢量存放器(PIVR)中讀取相應(yīng)外設(shè)中斷矢量。 通常并將其左移一個(gè)預(yù)定的值,再加上偏移量,所得到
26、的值就是這個(gè)外設(shè)中斷事件的中斷效力程序(SISR) 的入口地址。 在SISR中執(zhí)行對(duì)該外設(shè)中斷事件的效力。5執(zhí)行SISR,直到一條前往指令,終了該中斷效力程序。6從棧頂彈出前往地址到PC。.例: 典型中斷效力程序代碼 假設(shè):掛在INT2 之下的EVA 通用定時(shí)器1的周期中斷 INT2的中斷矢量為 0004h EVA 通用定時(shí)器1 周期中斷的中斷矢量(PIV)為 0027h (存放在PIVR) 地址 匯編言語代碼 ;CPU中斷矢量表0000h RSVECT : B START ;復(fù)位矢量0002h INT1: B GISR1 ;轉(zhuǎn)移到INT1的通用中斷效力子程序GISR10004h INT2:
27、B GISR2 ; 轉(zhuǎn)移到INT2的通用中斷效力子程序GISR2; CPU其他中斷矢量.地址 匯編言語代碼GISR1:; 其他中斷的通用中斷效力子程序 GISR2: ; 保管必要的上、下文LACC PIVR, 1 ; 將中斷矢量存放器(PIVR)的值移位(2)后裝; 入累加器ADD offset ;累加器的值加一個(gè)偏移量后,即為特定的中斷; 效力子程序 SISRx的地址BACC ;轉(zhuǎn)移到累加器指示的地址中(2PIV+offset); 外設(shè)中斷矢量表2PIV+offsetB SISR1 ;轉(zhuǎn)移到中斷事件的特定中斷效力子程序SISR中2PIV+offset+2B SISR2B SISRxSISRx
28、:;外部事件中斷效力程序RET;前往 .三、 非屏蔽中斷1硬件非屏蔽中斷 兩個(gè)引腳產(chǎn)生硬件非屏蔽中斷:RS (復(fù)位): CPU停頓程序流程,使處置器回到一個(gè)初始形狀,然后從地址0000h 開場執(zhí)行。NMI : 當(dāng)該信號(hào)被激活時(shí)(NMI 引腳變低或NMI指令), CPU使程序控制轉(zhuǎn)向0024h矢量地址,同時(shí)可屏蔽中斷被制止(NTM = 1)。 NMI也可用做軟件復(fù)位,與硬件復(fù)位不同,其不影響器件任何方式,也不終止當(dāng)前有效指令或存儲(chǔ)器的操作。 LF240 x芯片沒有NMI引腳,當(dāng)器件訪問一個(gè)無效地址時(shí),將產(chǎn)生非屏蔽中斷懇求 .2軟件非屏蔽中斷3條指令可引起軟件非屏版中斷:INTR KNMITRAP
29、 該指令允許啟動(dòng)中斷,指令操作數(shù)K表示CPU將轉(zhuǎn)移到哪個(gè)中斷矢量單元。 例 INTR 10 當(dāng)呼應(yīng)INTR中斷時(shí),INTM=1制止可屏蔽中斷。 留意:INTR指令不影響IFR標(biāo)志。.2軟件非屏蔽中斷3條指令可引起軟件非屏版中斷:INTR KNMITRAP 該指令使程序轉(zhuǎn)移到中斷矢量地址24h。 與不可屏蔽硬件中斷NMI運(yùn)用同一單元。 .2軟件非屏蔽中斷3條指令可引起軟件非屏版中斷:INTR KNMITRAP 該指令使CPU轉(zhuǎn)移到中斷矢量單元22h,該指令不制止任何可屏蔽中斷,即INTM不被置1.非屏蔽中斷流程圖.四、中斷效力程序ISR的現(xiàn)場維護(hù)與中斷嵌套CPU得到中斷懇求并呼應(yīng)之后,就根據(jù)中斷
30、矢量轉(zhuǎn)移到相應(yīng)的中斷效力程序ISR中,ISR在為中斷所要求的義務(wù)效力前需求保管和恢復(fù)存放器的值,并且還要管理中斷嵌套。.1保管和恢復(fù)存放器值CPU進(jìn)入中斷效力程序(ISR)之前,硬件只將增量后的程序計(jì)數(shù)器的值自動(dòng)保管起來,所以在中斷效力程序中要用軟件對(duì)一些重要存放器的值進(jìn)展保管和恢復(fù)。例如:假設(shè)ISR需求執(zhí)行一次乘法運(yùn)算,那么它就需求運(yùn)用乘法存放器(PREG)。假設(shè)先前的PREG值要求在執(zhí)行完ISR之后仍保管在PREG中,那么ISR必需先保管該值,再執(zhí)行新的乘法運(yùn)算,當(dāng)乘法運(yùn)算執(zhí)行完后,中斷效力程序前往之前,再重新裝載原來那個(gè)PREG值。在大多數(shù)中斷效力程序中,都需求對(duì)某些存放器進(jìn)展維護(hù),所以
31、,經(jīng)常備份個(gè)通用的保管和恢復(fù)程序,供中斷效力程序調(diào)用。.2中斷效力程序(ISR)嵌套的管理C2000硬件堆棧允許中斷嵌套,但須留意:1假設(shè)希望一個(gè)可屏蔽中斷可以中斷ISR,那么,該ISR必需不屏蔽這個(gè)中斷,可在中斷效力程序中,經(jīng)過對(duì)IMR中的相應(yīng)位設(shè)置和執(zhí)行允許中斷指令(CLRC INTM)來解除該中斷屏蔽。28級(jí)硬件堆棧。每進(jìn)展一次中斷效力或進(jìn)入子程序都要將前往地址壓入堆棧,以提供前往的途徑,所以最多允許中斷或子程序嵌套8級(jí)。 假設(shè)軟件需求的堆棧超越8級(jí),可以利用POPD和PSHD指令將堆棧有效地?cái)U(kuò)展到數(shù)據(jù)存儲(chǔ)空間。.3) C2000具有防止不測嵌套的功能。 由于在執(zhí)行完中斷的效力程序前往之
32、前,總要先允許中斷,即執(zhí)行 CLRC INTM RET 假設(shè)在執(zhí)行CLRC INTM時(shí)發(fā)生了不測中斷,CPU總是先完成CLRC INTM指令及其后面的那條指令后才去處置已掛起的中斷。 假設(shè)希望在中斷效力程序中實(shí)現(xiàn)中斷嵌套,應(yīng)在前往(RET)指令前至少兩條指令的位置上插入CLRC INTM指令,即 CLRC INTM . . RET.五、中斷等待時(shí)間中斷等待時(shí)間是指提出中斷懇求到呼應(yīng)懇求之間的時(shí)間,其長短取決于許多要素。在執(zhí)行個(gè)軟件中斷之前CPU總是要完成流水線操作中的一切指令,不可屏蔽中斷最小等待時(shí)間為4個(gè)周期。一個(gè)外部可屏蔽硬件中斷,其最小等待時(shí)間為8個(gè)周期。LF/LC240 x中斷等待時(shí)間包括外設(shè)同步接口時(shí)間、CPU呼應(yīng)時(shí)間、ISR轉(zhuǎn)移時(shí)間。外設(shè)同步接口時(shí)間是指外設(shè)中斷事件發(fā)生中斷懇求,經(jīng)PIE識(shí)別、判優(yōu)、轉(zhuǎn)換后將懇求發(fā)送至CPU的時(shí)間。CPU呼應(yīng)時(shí)間是指CPU識(shí)別出曾經(jīng)被使能的中斷、呼應(yīng)中斷、去除流水線,到從CPU的中斷矢量表中取出轉(zhuǎn)移指令的時(shí)間。ISR轉(zhuǎn)移時(shí)間是指CPU執(zhí)行通用中斷效力程序,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 商業(yè)綜合體開發(fā)橋涵施工合同
- 天津市醫(yī)療用房買賣合同
- 2025版股權(quán)轉(zhuǎn)讓合同:某創(chuàng)業(yè)公司股東之間關(guān)于股權(quán)轉(zhuǎn)讓及股權(quán)激勵(lì)的具體條款協(xié)議2篇
- 機(jī)電安裝工程項(xiàng)目合作協(xié)議
- 水土保持生態(tài)公益林管理措施
- 城市供水人工打水井施工合同
- 養(yǎng)雞場租賃合同:環(huán)??沙掷m(xù)發(fā)展
- 碳排放權(quán)交易法律援助合同
- 2025年度數(shù)字貨幣交易與結(jié)算平臺(tái)開發(fā)合同3篇
- 2025版勞動(dòng)工傷賠償協(xié)議范本及賠償范圍界定詳解3篇
- word 公章 模板
- T∕ZSQX 008-2020 建設(shè)工程全過程質(zhì)量行為導(dǎo)則
- ISO-IEC17025-2017實(shí)驗(yàn)室管理體系全套程序文件
- 業(yè)務(wù)員手冊(cè)內(nèi)容
- pH值的測定方法
- 輸出軸的機(jī)械加工工藝規(guī)程及夾具設(shè)計(jì)
- 元旦文藝匯演校長致辭
- 國家開放大學(xué)電大本科《管理案例分析》2023-2024期末試題及答案試卷編號(hào):1304
- 離合器接合叉機(jī)械工藝說明書
- PWM脈寬直流調(diào)速系統(tǒng)設(shè)計(jì)及 matlab仿真驗(yàn)證
- 蜂窩煤成型機(jī)設(shè)計(jì)方案.doc
評(píng)論
0/150
提交評(píng)論