DSP 課件 第三章 程序控制和中斷管理_第1頁
DSP 課件 第三章 程序控制和中斷管理_第2頁
DSP 課件 第三章 程序控制和中斷管理_第3頁
DSP 課件 第三章 程序控制和中斷管理_第4頁
DSP 課件 第三章 程序控制和中斷管理_第5頁
已閱讀5頁,還剩43頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第3章

程序控制和中斷管理 在執(zhí)行當(dāng)前指令的同時,程序流要求處理器生成下一條指令的程序地址,預(yù)定程序的路線。 程序地址的產(chǎn)生見以下圖:3.1程序地址的產(chǎn)生程序地址產(chǎn)生框圖程序地址產(chǎn)生邏輯使用的硬件器件功能程序計(jì)數(shù)器(PC)對內(nèi)部和外部程序存儲器尋址程序地址寄存器(PAR)驅(qū)動程序地址總線,提供程序的讀、寫地址堆棧保存返回地址微堆棧(MATACK)保存返回地址重復(fù)計(jì)數(shù)器(RPTC)與重復(fù)指令(RPT)一起,用來 確定RPT后的一條指令重復(fù)執(zhí)行的次數(shù)。程序地址產(chǎn)生源操作程序地址來源順序操作程序計(jì)數(shù)器PC(程序地址+1)空周期程序地址寄存器PAR(程序地址+1)從子程序返回堆棧棧頂(TOS)從表傳送或塊傳送返回微堆棧(MSTACK)轉(zhuǎn)移到或調(diào)用指令中指定的地址轉(zhuǎn)移到或調(diào)用累加器低半部分指定的地址轉(zhuǎn)移到中斷服務(wù)程序轉(zhuǎn)移或調(diào)用指令,即利用程序讀總線(PRDB)的方式獲取程序地址。累加器的低半部分,即利用數(shù)據(jù)讀總線(DRDB)的方式獲取程序地址中斷矢量單元,即利用 程序讀總線(PRDB)的方式獲取程序地址。程序計(jì)數(shù)器 程序地址產(chǎn)生邏輯使用16位程序計(jì)數(shù)器〔PC〕對內(nèi)部和外部程序存儲器尋址,PC中存放將被執(zhí)行的下一條指令的地址。通過程序地址總線〔PAB〕,從程序存儲器該地址處取出指令并裝入指令存放器,當(dāng)裝載入指令存放器時,PC中保存下一個地址。裝入PC中的地址將累加器低16位加載到PC。利用BACC(轉(zhuǎn)移到累加器中的地址)或CALA(調(diào)用累加器指令單元的子程序)指令可實(shí)現(xiàn)計(jì)算轉(zhuǎn)移操作加載到PC的地址順序執(zhí)行若當(dāng)前指令字是一個字,則將PC+1加載到PC若當(dāng)前指令字是兩個字,則將PC+2加載到PC轉(zhuǎn)移轉(zhuǎn)移指令后的長立即數(shù)直接加載到PC子程序調(diào)用和返回調(diào)用指令:將PC中的下一條指令的地址壓入堆棧, 然后將調(diào)用的指令后的長立即數(shù)加載到PC返回指令:將返回地址從堆棧中彈回PC軟件或硬件中斷將相應(yīng)的中斷矢量地址裝入PC。在該矢量單元,通常有一條轉(zhuǎn)移指令,又將相應(yīng)的中斷服務(wù)程序的地址加載到PC計(jì)算轉(zhuǎn)移代碼操作堆棧 16位寬、8級深的硬件堆棧。當(dāng)調(diào)用子程序或發(fā)生中斷時,程序地址產(chǎn)生邏輯用其保存返回地址。 當(dāng)CPU進(jìn)入子程序或中斷效勞程序時,返回地址自動裝入該堆棧的棧頂,這一操作不需附加周期。 當(dāng)子程序或中斷效勞程序完成時,返回指令將返回地址從棧頂傳送到程序計(jì)數(shù)器。 當(dāng)不需要用8級返回地址時,該堆棧也可用來保存子程序或中斷效勞程序的有關(guān)數(shù)據(jù)或用于其他目的。訪問堆棧的指令:PUSH〔壓入〕和POP〔彈出〕PUSH:把累加器的低16位拷貝到棧頂POP:把棧頂值拷貝到累加器低16位PSHD和POPD

當(dāng)子程序或中斷嵌套超過8級時,利用此指令在數(shù)據(jù)存儲區(qū)中建立一個堆棧。PSHD把數(shù)據(jù)存儲器中的值壓入棧頂,POPD將棧頂值彈出到數(shù)據(jù)存儲器。微堆棧 微堆棧只有1級深、16位寬,沒有可以使用微堆棧保存信息的指令,只有程序地址產(chǎn)生邏輯才能夠使用微堆棧。 程序地址產(chǎn)生邏輯在執(zhí)行BLDD、BLPD、MAC、TBLR及TBLW指令時,用微堆棧保存返回地址。執(zhí)行這些指令時,首先把PC+1的地址送到微堆棧保存,然后用PC存放第一個操作數(shù)的地址,用輔助存放器算術(shù)單元ARAU產(chǎn)生第二個操作數(shù)的地址,當(dāng)這些指令重復(fù)執(zhí)行時,PC可使第一個操作數(shù)的地址自動增量,ARAU使第二個操作數(shù)的地址改變,到所重復(fù)的指令完成時再將微堆棧彈回到程序地址產(chǎn)生邏輯。流水線操作

指令流水線包括執(zhí)行時發(fā)生的一系列總線操作。LF240x的流水線有4個獨(dú)立的階段:取指令、指令譯碼、取操作數(shù)和執(zhí)行指令。4個操作階段是獨(dú)立的,在任意的指定周期內(nèi),1~4個不同的指令都被激活,每一條被激活的指令都處于不同的完成階段。4級流水線的操作流水線操作一般是不可見的,但以下情況例外:〔1〕緊跟在修改全局存儲器分配存放器〔GREG〕后的單字、單周期指令使用先前的全局映射?!?〕在流水線操作的執(zhí)行階段,NORM指令修改ARP,并使用當(dāng)前輔助存放器,如果隨后的兩個指令要改變當(dāng)前輔助存放器的內(nèi)容或ARP,那么它們將在流水線的譯碼階段進(jìn)行,這將導(dǎo)致NORM指令使用錯誤的輔助存放器值,并導(dǎo)致隨后的指令使用錯誤的ARP值。所以在NORM后不要安排改變當(dāng)前輔助存放器和ARP內(nèi)容的指令。 轉(zhuǎn)移、調(diào)用和返回改變指令流的順序,轉(zhuǎn)到新的地址單元去執(zhí)行指令。 轉(zhuǎn)移僅使控制轉(zhuǎn)換到新的地址單元;調(diào)用要將返回地址保存到硬件堆棧的棧頂;返回指令將堆棧中的返回地址彈到程序計(jì)數(shù)器。3.2轉(zhuǎn)移、調(diào)用和返回3.2.1無條件指令無條件轉(zhuǎn)移執(zhí)行無條件轉(zhuǎn)移時,將指定的程序存儲器的地址加載到PC上,并從該地址開始執(zhí)行程序。加載到PC的地址可以來自轉(zhuǎn)移指令的第二個操作數(shù),也可能是累加器的低16位。 無條件轉(zhuǎn)移指令有B〔轉(zhuǎn)移〕和BACC〔轉(zhuǎn)移到累加器指定的地址〕。無條件調(diào)用執(zhí)行無條件調(diào)用時,將指定的程序存儲器的地址加載到PC上,并從該地址開始執(zhí)行程序。加載到PC的地址可以來自轉(zhuǎn)移指令的第二個操作數(shù),也可能是累加器的低16位。加載PC之前將返回地址保存到堆棧。子程序或函數(shù)執(zhí)行之后,返回指令將返回地址從堆棧加載到PC,從調(diào)用指令后的那條指令開始執(zhí)行。 無條件轉(zhuǎn)移指令有CALL、CALA〔調(diào)用累加器指定單元處的子程序〕。無條件返回 執(zhí)行無條件返回指令〔RET〕時,將棧頂?shù)闹导虞d到PC,并從該地址繼續(xù)執(zhí)行程序。3.2.2有條件指令操作符號條件描述EQNEQLTLEQGTGEQCNCOVNOVBIOTCNTCACC=0ACC≠0ACC<0ACC≤0ACC>0ACC≥0C=1C=0OV=1OV=0BIO低TC=1TC=0累加器的值等于0累加器的值不等于0累加器的值小于0累加器的值不小于0累加器的值大于0累加器的值不大于0進(jìn)位位置1進(jìn)位位清0檢測到累加器溢出檢測到累加器不溢出BIO引腳為低電平測試/控制位置1測試/控制位清0使用多個條件組1組2A類B類B類A類C類EQNEQLTLEQGTGEQOVNOVNTCTCCNCBIO在條件指令的操作數(shù)中可以列出多個條件,必須所有條件都滿足才是條件滿足。對于每一種組合,必須按如下規(guī)那么從組1組2中選擇條件。組1:最多可選兩個條件。每個條件來自不同的類。組2:最多可選3個條件。每個條件來自不同的類,不能有兩個條件來自同一類。 條件指令必須能測試到狀態(tài)位的最新值。直到流水線的執(zhí)行階段,即前一條指令執(zhí)行后一個周期才能認(rèn)為條件穩(wěn)定。流水線控制器在條件穩(wěn)定之前停止對條件指令后的任何指令譯碼。條件的穩(wěn)定性條件轉(zhuǎn)移〔BCND、BANZ〕: 該指令使程序轉(zhuǎn)移到程序存儲器的任何地址,只有滿足一個或多個由用戶指定的條件時,才能實(shí)現(xiàn)轉(zhuǎn)移。此時,PC裝載轉(zhuǎn)移指令的第2個字,并從該地址開始繼續(xù)執(zhí)行此指令。 無條件轉(zhuǎn)移指令有BCND〔條件轉(zhuǎn)移〕和BAND〔假設(shè)當(dāng)前輔助存放器不為0,那么轉(zhuǎn)移〕。條件指令的執(zhí)行條件調(diào)用〔CC〕:該指令可使程序根據(jù)處理數(shù)據(jù)的不同在多個子程序間進(jìn)行選擇,只有當(dāng)用戶指定的一個或多個特定條件滿足時才能調(diào)用。此時,PC裝載調(diào)用指令的第2個字,并將返回地址保存在堆棧中,然后執(zhí)行子程序。 條件返回 返回指令〔RET〕: 與調(diào)用或中斷配合使用。調(diào)用或中斷把返回指令保存到堆棧里,被調(diào)用的子程序或中斷效勞程序以返回指令結(jié)束,該指令將返回地址從堆棧彈到PC。 條件返回指令〔RETC〕: 當(dāng)用戶指定的一個或多個條件滿足時才執(zhí)行。利用該指令可使子程序或中斷效勞程序有多種返回路徑。3.3重復(fù)指令 重復(fù)指令〔RPT〕:將單條指令重復(fù)執(zhí)行N+1次。N為指令的操作數(shù)。 執(zhí)行RPT時,N裝入重復(fù)計(jì)數(shù)器RPTC,每執(zhí)行一次,RPTC減1,直至RPTC為0。如果N是從一個數(shù)據(jù)存儲單元讀取,RPTC為16位計(jì)數(shù)器;如果N為一操作常數(shù),RPTC為8位計(jì)數(shù)器。3.4中斷中斷是計(jì)算機(jī)的一種特殊的運(yùn)行方式。在正常情況下,CPU按照程序預(yù)定的路線進(jìn)行,當(dāng)外圍設(shè)備有事件產(chǎn)生需要CUP來處理,即發(fā)出中斷請求信號,CPU暫停工作,保存好現(xiàn)場,然后轉(zhuǎn)到該中斷請求對應(yīng)的效勞子程序的入口處,待效勞子程序運(yùn)行完畢,CPU自動恢復(fù)現(xiàn)場,從原停頓點(diǎn)繼續(xù)往下運(yùn)行。計(jì)算機(jī)采用中斷方式,可以節(jié)省CPU資源,CPU可以不花時間去輪尋外圍設(shè)備是否需要效勞。每一種計(jì)算機(jī)都有多個中斷源,CPU對中斷的響應(yīng)需要按序進(jìn)行,需要一個中斷管理系統(tǒng)模塊對中斷源進(jìn)行管理控制。3.4.1中斷的分類軟件中斷 由指令I(lǐng)NTR、NMI和TRAP產(chǎn)生。硬件中斷 由來自物理設(shè)備的信號產(chǎn)生,包括復(fù)位、非屏蔽中斷NMI和可屏蔽中斷INT1、INT2、INT3、INT4、INT5、INT6。

可屏蔽中斷

可以通過軟件將它們禁止或允許的中斷。均為硬件中斷。當(dāng)硬件設(shè)備或外部引腳成功地請求了可屏蔽中斷時,與其對應(yīng)的一個或幾個標(biāo)志被激活,無論是否響應(yīng)此中斷,這些標(biāo)志均被設(shè)置為1。不可屏蔽中斷 不能通過軟件將其禁止或允許的中斷。包括所有軟件中斷和兩種外部硬件中斷和。外設(shè)事件要引起中斷,必須保證:外設(shè)事件的中斷使能位被使能,CPU內(nèi)核級的6個可屏蔽中斷中,能控制該外設(shè)事件高級中斷至少有一個被使能。在外設(shè)事件發(fā)生時,首先將其在外設(shè)中斷控制器中的標(biāo)志位置1,然后會在中斷標(biāo)志存放器IFR中的INTx位由硬件置1,說明正在等待CPU響應(yīng),從而引起CPU內(nèi)核的INT1~INT6中的一個產(chǎn)生中斷。中斷響應(yīng)的延時從發(fā)出中斷請求到得到效勞之間的延遲時間,與很多因素有關(guān):〔1〕軟件中斷最少要延時4個CPU時鐘周期?!?〕外部可屏蔽中斷最少要延時8個CPU時鐘周期?!?〕假設(shè)在使用RPT重復(fù)時發(fā)生中斷,為了保證指令流水線的完整,需等到該重復(fù)循環(huán)完才響應(yīng)中斷。但復(fù)位中斷例外。〔4〕為使CPU能完成返回,在RET指令后中斷被禁止,直至在返回指令上至少執(zhí)行一條指令?!?〕讀寫速度慢的外部存儲器需要等待延時,如果中斷向量存放在外部存儲器,等待狀態(tài)會影響中斷的響應(yīng)時間。當(dāng)CPU接受中斷請求時,并不知道是哪一個外設(shè)事件引起的中斷請求。為了讓CPU能夠區(qū)別這些引起中斷的外設(shè)事件,DSP控制器給每個中斷分配了一個特定的入口地址,稱為中斷向量。在每個外設(shè)中斷請求有效時都會產(chǎn)生一個唯一的外設(shè)中斷向量,這個外設(shè)中斷向量被裝載到外設(shè)中斷向量存放器〔PIVR〕中。CPU應(yīng)答外設(shè)中斷時,從PIVR中讀取相應(yīng)中斷的向量,并產(chǎn)生一個轉(zhuǎn)到該中斷效勞程序入口的向量。當(dāng)某個中斷發(fā)出請求,而且允許中斷,那么CPU先將當(dāng)前的PC加1壓入堆棧,即保護(hù)返回地址;然后,CPU自動地將該請求中斷的向量地址送入PC,CPU便轉(zhuǎn)入該請求中斷的效勞子程序運(yùn)行;當(dāng)碰到效勞子程序的返回指令RET時,CPU自動將堆棧中的返回地址彈出到PC中,恢復(fù)中斷前的程序繼續(xù)進(jìn)行。3.4.2中斷向量為了更好地管理中斷復(fù)用情況,DSP控制器為事件管理模塊的每一個中斷分配了一個偏移向量地址,并且當(dāng)某個事件管理模塊發(fā)出了請求信號,會自動地將該中斷的偏移向量地址寫入到對應(yīng)的事件中斷向量存放器中。當(dāng)進(jìn)入DSP內(nèi)核中斷的效勞子程序GISR后,將事件中斷向量存放器的內(nèi)容送到累加器,然后經(jīng)分支指令便可轉(zhuǎn)入到專為某個事件管理模塊中斷所寫的中斷效勞子程序SISR的入口。在程序存儲器的0000h~003FH單元。每個中斷有兩個地址單元。存放一條兩個字的分支指令〔如B指令〕。這樣,可以在較大的程序存儲空間中開辟出一塊存放中斷效勞子程序的空間,通過中斷向量處的分支指令轉(zhuǎn)入到真正的中斷效勞子程序空間的入口處。中斷優(yōu)先級和中斷矢量表TMS320LF240xCPU提供了6個可屏蔽中斷:INT1~INT6,INT1優(yōu)先級最高,INT1最低。利用6個中斷級,采用中斷擴(kuò)展設(shè)計(jì)可以使芯片能夠管理46個可屏蔽中斷請求。3.4.3TMS320LF240x的可屏蔽中斷〔1〕中斷標(biāo)志存放器〔IFR〕: 位于數(shù)據(jù)存儲器的0060H,用于識別和去除掛起的中斷。 當(dāng)中斷源INT1~INT6中某一級向CPU發(fā)出可屏蔽中斷請求時,控制存放器中響應(yīng)的標(biāo)志位被置1。如果該中斷未被屏蔽,那么中斷請求被送到CPU,說明該中斷正被掛起或等待響應(yīng)。 讀取IFR可以識別掛起的中斷,向IFR相應(yīng)的位寫1那么去除已掛起的中斷。把IFR中當(dāng)前的內(nèi)容寫回IFR那么可去除所有掛起的中斷CPU響應(yīng)中斷或器件復(fù)位那么將IFR標(biāo)志去除。3.4.3.1CPU中斷管理存放器IFRINT1flagINT2flagINT3flagINT4flagINT5flagINT6flagReservedD15~D6D0D1D2D3D4D5D15~D6Reserved---保存位。D5INT6flag---中斷6標(biāo)志位。作為連至INT6的所有外部中斷的標(biāo)志。D4INT5flag---中斷5標(biāo)志位。作為連至INT5的所有外部中斷的標(biāo)志。D3INT4flag---中斷4標(biāo)志位。作為連至INT4的所有外部中斷的標(biāo)志。D2INT3flag---中斷3標(biāo)志位。作為連至INT3的所有外部中斷的標(biāo)志。D1INT2flag---中斷2標(biāo)志位。作為連至INT2的所有外部中斷的標(biāo)志。D0INT1flag---中斷1標(biāo)志位。作為連至INT1的所有外部中斷的標(biāo)志?!?〕中斷屏蔽存放器〔IMR〕: 位于數(shù)據(jù)存儲器的0004H,包含所有中斷級〔INT1~INT6〕的屏蔽位。 讀IMR可以識別以被屏蔽或被使能的中斷,向IMR中某位寫0那么屏蔽相應(yīng)的中斷級;寫1那么使能該中斷級。IMRINT1maskINT2maskINT3maskINT4maskINT5maskINT6maskReservedD15~D6D0D1D2D3D4D5D15~D6Reserved---保存位。D5INT6mask---中斷6屏蔽位。D4INT5mask---中斷5屏蔽位。D3INT4mask---中斷4屏蔽位。D2INT3mask---中斷3屏蔽位。D1INT2mask---中斷2屏蔽位。D0INT1mask---中斷1屏蔽位。3.4.3.2外設(shè)中斷存放器 外設(shè)中斷存放器包括:1個外設(shè)中斷矢量存放器〔PIVR,地址701Eh〕;3個外設(shè)中斷請求存放器0/1/2〔PIRQR0/1/2,地址7010h/7011h/7012h〕;3個外設(shè)中斷應(yīng)答存放器0/1/2〔PIACK0/1/2,地址7014h/7015h/7016h〕。 外設(shè)中斷請求存放器0/1/2和外設(shè)中斷應(yīng)答存放器0/1/2是外設(shè)中斷擴(kuò)展模塊用來向CPU產(chǎn)生INT1~INT6中斷請求的內(nèi)部存放器。只能對其測試〔可讀〕,不能對其編程〔不可寫〕。 外設(shè)中斷請求存放器0/1/2的某位為1,說明相應(yīng)的中斷請求被掛起;為0,未被掛起。向某位寫1將發(fā)出一個中斷請求到CPU,寫入0沒影響。向外設(shè)中斷應(yīng)答存放器的某位為1,將引起相應(yīng)的外設(shè)中斷應(yīng)答被插入,從而將相應(yīng)的外設(shè)中斷請求位清0,但不改變外設(shè)中斷矢量存放器的內(nèi)容。3.4.3.3外設(shè)中斷控制存放器〔1〕外設(shè)中斷1控制存放器〔XINT1CR〕XINT1flagReservedXINT1polarityXINT1priorityXINT1enableD14~D3D0D1D2D15D15XINT1flag---XINT1標(biāo)志位。指示在XINT1引腳上是否檢測到一個 跳變,無論外部中斷1是否使能,XINT1引腳中跳變時該位總被置 位。當(dāng)相應(yīng)的中斷被應(yīng)答時,該位被自動清0,通過軟件向該位寫1 或復(fù)位是該位被清0。0----未檢測到跳變;1----檢測到跳變。D14~D3Reserved---保存位。D2XINT1polarity---XINT1極性。0----在下降沿產(chǎn)生中斷;1----在上 升沿產(chǎn)生中斷D1XINT1polarity---XINT1優(yōu)先級。0-----高優(yōu)先級;1-----低優(yōu)先級D0XINT1enable---XINT1使能位。0-----屏蔽中斷;1-----使能中斷〔2〕外設(shè)中斷2控制存放器〔XINT2CR〕XINT2flagReservedXINT2polarityXINT2priorityXINT2enableD14~D3D0D1D2D15D15XINT2flag---XINT2標(biāo)志位。指示在XINT1引腳上是否檢測到一個 跳變,無論外部中斷1是否使能,XINT2引腳中跳變時該位總被置 位。當(dāng)相應(yīng)的中斷被應(yīng)答時,該位被自動清0,通過軟件向該位寫1 或復(fù)位是該位被清0。0----未檢測到跳變;1----檢測到跳變。D14~D3Reserved---保存位。D2XINT2polarity---XINT2極性。0----在下降沿產(chǎn)生中斷;1----在上 升沿產(chǎn)生中斷D1XINT2polarity---XINT2優(yōu)先級。0-----高優(yōu)先級;1-----低優(yōu)先級D0XINT2enable---XINT2使能位。0-----屏蔽中斷;1-----使能中斷3.4.4不可屏蔽中斷〔1〕硬件非屏蔽中斷 :TMS320LF240x有兩個復(fù)位源:一個外部復(fù)位引腳復(fù)位和一個程序監(jiān)視定時器〔看門狗〕復(fù)位。復(fù)位引腳為一個I/O腳,如果有內(nèi)部復(fù)位事件〔程序監(jiān)視定時器復(fù)位〕發(fā)生,那么該引腳被設(shè)置為輸出方式,并且為低電平,向外部電路說明器件正在自己復(fù)位。外部復(fù)位引腳信號和程序監(jiān)視定時器復(fù)位信號相或后一起驅(qū)動CPU的復(fù)位信號。當(dāng)復(fù)位信號有效后,CPU將終止一切工作,把系統(tǒng)復(fù)位到缺省狀態(tài)上,同時,自動轉(zhuǎn)到復(fù)位中斷向量0000h處開始程序的運(yùn)行,因此在程序存儲器的首地址0000h必須安排一個分支到主程序入口的指令。:TMS320LF240x無該引腳,當(dāng)器件訪問一個無效地址時,將產(chǎn)生非屏蔽中斷請求,程序那么轉(zhuǎn)移到非屏蔽中斷矢量地址0024h處,從中取出一條轉(zhuǎn)移指令,然后轉(zhuǎn)向非屏蔽中斷的入口,執(zhí)行相應(yīng)的中斷效勞程序。無效地址檢測:系統(tǒng)和外設(shè)模塊控制存放器地址映射中包含不可實(shí)現(xiàn)單元,譯碼邏輯能夠檢測任何對于這些無效地址的訪問。一旦檢測到對無效地址的訪問,就將系統(tǒng)控制和狀態(tài)存放器〔SCSR1〕中的無效地址標(biāo)志位〔ILLADR〕置1,從而產(chǎn)生一個不可屏蔽中斷NMI。無論何時檢測到訪問無效地址都會產(chǎn)生插入一個無效地址條件,無效地址標(biāo)志位在無效地址條件發(fā)生之后被置1,并保持直到軟件將其去除。〔2〕軟件非屏蔽中斷INTRK 該指令允許啟動任何中斷,指令操作數(shù)K表示CPU將轉(zhuǎn)移到哪個中斷矢量單元,當(dāng)響應(yīng)INTR中斷時,ST0中的INTM位置1,禁止可屏蔽中斷。NMI 該指令允許轉(zhuǎn)移到中斷矢量地址24h,與不可屏蔽中斷使用同一單元。即引腳為低或執(zhí)行NMI均可啟動中斷。當(dāng)執(zhí)行NMI指令時,INTM置1以禁止可屏蔽中斷。TRAP 該指令使CPU轉(zhuǎn)移到中斷矢量地址22h,TRAP不禁止任何不可屏蔽中斷。當(dāng)CPU轉(zhuǎn)移到中斷效勞程序時,該中斷效勞程序可以被可屏蔽硬件中斷所中斷。3.4.5中斷效勞程序〔ISR〕CPU得到中斷請求并響應(yīng)之后,根據(jù)中斷矢量轉(zhuǎn)移到相應(yīng)的中斷效勞程序ISR中,ISR在為中斷所要求的任務(wù)前需要保存和恢復(fù)存放器的值,并且還要管理中斷嵌套。2中斷效勞程序嵌套的管理考慮中斷嵌套時,需注意:〔1〕假設(shè)希望一個可屏蔽中斷能夠中斷ISR,那么,該ISR必須不屏蔽該中斷,可在中斷效勞程序中,對IMR中的相應(yīng)位設(shè)置和執(zhí)行允許中斷指令〔CLRCINTM〕來解除該中斷屏蔽?!?〕8級硬件堆棧。如果軟件需要的堆棧超過8級,可以使用POPD和PSHD指令將堆棧有效地?cái)U(kuò)展到數(shù)據(jù)存儲空間。〔3〕防止意外嵌套功能。在返回指令RET前至少兩條指令的位置上插入CLRCINTM指令。1保存和恢復(fù)存放器值 CPU進(jìn)入中斷效勞程序〔ISR〕之前,硬件只將增量后的程序計(jì)數(shù)器的值自動保存起來,所以在中斷效勞程序中要用軟件對一些重要存放器的值進(jìn)

溫馨提示

  • 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

提交評論