版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第六章 中斷系統(tǒng)及其應(yīng)用,6.1 中斷的基本概念,6.1.1 中斷概念 6.1.2 中斷源 6.1.3 中斷系統(tǒng)功能,6.1.1 中斷概念,計(jì)算機(jī)在執(zhí)行程序的過程中,由于CPU之外的某種原因,有必要盡快地中止該程序的執(zhí)行,轉(zhuǎn)而去執(zhí)行相應(yīng)的處理程序,待處理程序結(jié)束之后,再返回來繼續(xù)執(zhí)行從斷點(diǎn)處開始的原程序。 這種程序在執(zhí)行過程中由于外界的原因而被中間打斷的情況稱為“中斷”。,6.1.1 中斷概念,中斷之后,CPU執(zhí)行的處理程序,稱為中斷服務(wù)程序,而把中斷之前原來運(yùn)行的程序稱為主程序。 主程序被斷開的位置(地址)稱為斷點(diǎn)。 能夠向CPU發(fā)出中斷申請的來源,稱為中斷源,它是引起CPU中斷的原因。 中
2、斷源向CPU要求服務(wù)的請求稱為中斷請求,或中斷申請。,6.1.1 中斷概念,CPU響應(yīng)中斷,進(jìn)行中斷處理類似于調(diào)用子程序。 其區(qū)別在于,由于引起中斷的原因是隨機(jī)發(fā)生的,因而轉(zhuǎn)向中斷服務(wù)程序進(jìn)行中斷處理也是隨機(jī)的; 而調(diào)用子程序,則是在程序中事先安排好的。,6.1.1 中斷概念,引入中斷的益處 實(shí)現(xiàn)分時(shí)操作。 CPU在啟動(dòng)外設(shè)之后,繼續(xù)執(zhí)行主程序,同時(shí)外設(shè)也開始工作。 當(dāng)外設(shè)需要服務(wù)時(shí),便向CPU發(fā)出中斷申請,CPU轉(zhuǎn)去為外設(shè)作短暫的服務(wù),中斷處理完畢又返回執(zhí)行主程序,外設(shè)也繼續(xù)工作。 這樣就解決了快速的CPU與慢速的外設(shè)之間的矛盾,CPU可以和多個(gè)外設(shè)同時(shí)工作,大大提高了CPU的利用率。,6.
3、1.1 中斷概念,實(shí)現(xiàn)實(shí)時(shí)處理。 所謂實(shí)時(shí),就是指物理事件發(fā)生的真實(shí)時(shí)間。 實(shí)時(shí)處理,就是指計(jì)算機(jī)對(duì)外來信號(hào)的響應(yīng)要及時(shí),或者說對(duì)外來的信息要在限定的時(shí)間內(nèi)對(duì)其進(jìn)行處理,否則會(huì)丟失信息,產(chǎn)生錯(cuò)誤的處理。 微型機(jī)用于實(shí)時(shí)控制時(shí),現(xiàn)場的各種參數(shù)、狀態(tài)信息在任何時(shí)刻均可發(fā)出中斷請求,要求CPU及時(shí)進(jìn)行處理,引進(jìn)中斷后就能迅速作出響應(yīng)處理。 一般來說,實(shí)現(xiàn)實(shí)時(shí)任務(wù)的手段就是采用中斷。,6.1.1 中斷概念,及時(shí)處理故障。 微型機(jī)在運(yùn)行過程中,出現(xiàn)一些事先無法預(yù)料的故障是難免的,如電源突變,運(yùn)算溢出等,采用中斷,計(jì)算機(jī)便可自行處理而無需停機(jī)。 由于中斷請求是隨機(jī)輸入的,因中斷錯(cuò)誤而引起事故的再現(xiàn)性極差,
4、所以對(duì)于中斷故障方面的查錯(cuò)和測試比較困難。 在利用中斷技術(shù)時(shí),無論是在硬件設(shè)計(jì)或軟件編制方面更應(yīng)確保正確無誤。,6.1 中斷的基本概念,6.1.1 中斷概念 6.1.2 中斷源 6.1.3 中斷系統(tǒng)功能,6.1.2 中斷源,中斷源是提出中斷申請的來源。中斷源通??煞譃橐韵聨追N。 設(shè)備中斷 由計(jì)算機(jī)系統(tǒng)各組成部分的外部設(shè)備發(fā)出的中斷申請,稱為設(shè)備中斷。如鍵盤、行打印機(jī)、A/D轉(zhuǎn)換器等。 定時(shí)時(shí)鐘 定時(shí)提出中斷申請。例如,在定時(shí)控制或定時(shí)數(shù)據(jù)采集系統(tǒng)中,由外部時(shí)鐘電路定時(shí),一旦到達(dá)規(guī)定的時(shí)間,時(shí)鐘電路就向CPU發(fā)出中斷申請。,6.1.2 中斷源,故障源 目前,微型機(jī)的內(nèi)存RAM是采用半導(dǎo)體存儲(chǔ)器,
5、所以在電源掉電時(shí),需要接入備用電源供電電路,以便保護(hù)存儲(chǔ)器RAM中的信息。 一般的做法是,在直流電源上并聯(lián)電容,當(dāng)電容電壓因電源掉電下降到一定值時(shí)就發(fā)出中斷申請,CPU響應(yīng)中斷執(zhí)行保護(hù)現(xiàn)場信息的操作。,6.1.2 中斷源,程序性中斷源 例如,為調(diào)試程序而設(shè)置斷點(diǎn)、單步工作等。 對(duì)于每個(gè)中斷源,不僅要求能發(fā)出中斷請求信號(hào),而且這個(gè)信號(hào)還要能保持一定的時(shí)間,直至CPU響應(yīng)這個(gè)中斷請求后才能而且必須撤消這個(gè)中斷請求信號(hào)。 這樣既不會(huì)因CPU未及時(shí)響應(yīng)而丟失中斷申請信號(hào),也不會(huì)出現(xiàn)多次重復(fù)中斷的情況。所以,要求每個(gè)中斷源的接口電路中有一個(gè)中斷請求觸發(fā)器。 另外,在實(shí)際系統(tǒng)中,往往有多個(gè)中斷源,為了增加
6、控制的靈活性,在每個(gè)中斷源的接口電路中還設(shè)置一個(gè)中斷屏蔽觸發(fā)器,由它控制該中斷源的中斷申請信號(hào)能否送到CPU。,6.1 中斷的基本概念,6.1.1 中斷概念 6.1.2 中斷源 6.1.3 中斷系統(tǒng)功能,6.1.3 中斷系統(tǒng)功能,實(shí)現(xiàn)中斷及返回 當(dāng)某一中斷源發(fā)出中斷申請時(shí),若CPU允許響應(yīng)這個(gè)中斷請求,則CPU在現(xiàn)行指令執(zhí)行完后,把斷點(diǎn)處的PC值(即下一條要執(zhí)行指令的地址)、有關(guān)寄存器的內(nèi)容和標(biāo)志位的狀態(tài)推入堆棧保存下來(稱為保護(hù)斷點(diǎn)和保護(hù)現(xiàn)場);,6.1.3 中斷系統(tǒng)功能,然后再轉(zhuǎn)到相應(yīng)的中斷服務(wù)程序的入口,同時(shí)清除中斷請求觸發(fā)器; 當(dāng)中斷服務(wù)程序執(zhí)行完以后,再恢復(fù)被保留的寄存器的內(nèi)容和標(biāo)志
7、位的狀態(tài)(稱為恢復(fù)現(xiàn)場); 并將斷點(diǎn)地址從堆棧中彈出到PC,使CPU返回?cái)帱c(diǎn)處,繼續(xù)執(zhí)行主程序。,6.1.3 中斷系統(tǒng)功能,實(shí)現(xiàn)中斷優(yōu)先權(quán)排隊(duì) 通常在系統(tǒng)中有多個(gè)中斷源,有時(shí)出現(xiàn)兩個(gè)或多個(gè)中斷源同時(shí)提出中斷請求的情況,這就要求CPU既能區(qū)分各個(gè)中斷源的請求,又能確定首先為哪一個(gè)中斷源服務(wù)。 為了解決這一間題,用戶事先根據(jù)事件處理的緊迫性和實(shí)時(shí)性給各中斷源規(guī)定了優(yōu)先級(jí)別,即規(guī)定了中斷源享有的先后不同的響應(yīng)權(quán)利,稱為中斷優(yōu)先權(quán)。 CPU按中斷優(yōu)先權(quán)的高低逐次響應(yīng)中斷的過程稱為中斷優(yōu)先權(quán)排隊(duì)。 當(dāng)有兩個(gè)或多個(gè)中斷源同時(shí)提出中斷請求時(shí),CPU能識(shí)別出優(yōu)先權(quán)高的中斷源,并響應(yīng)它的中斷請求,待處理完后,再
8、響應(yīng)優(yōu)先權(quán)低的中斷源。,6.1.3 中斷系統(tǒng)功能,實(shí)現(xiàn)中斷嵌套 當(dāng)CPU響應(yīng)某一中斷源請求而進(jìn)行中斷處理時(shí),若有優(yōu)先級(jí)別更高的中斷源發(fā)出中斷申請,則CPU應(yīng)能中斷正在執(zhí)行的中斷服務(wù)程序,保留這個(gè)程序的斷點(diǎn)(類似于子程序嵌套),響應(yīng)優(yōu)先權(quán)級(jí)別高的中斷,在高級(jí)中斷處理完后,再返回被中斷的中斷眼務(wù)程序,繼續(xù)原 先的處理,這個(gè)過程就是中斷 嵌套。,6.1.3 中斷系統(tǒng)功能,優(yōu)先權(quán)低的中斷不能中斷優(yōu)先權(quán)高的中斷處理。所以,當(dāng)CPU正在進(jìn)行某一優(yōu)先權(quán)的中斷處理時(shí),如果有同級(jí)或優(yōu)先權(quán)級(jí)別低的中斷源提出中斷申請,則CPU暫不響應(yīng)這個(gè)中斷申請,直至正在處理的中斷服務(wù)程序執(zhí)行完以后才去處理新的中斷申請。,6.2
9、MCS-51單片機(jī)的中斷系統(tǒng),MCS-51的中斷系統(tǒng)主要由四個(gè)與中斷有關(guān)的特殊功能寄存器、中斷入口、順序查詢邏輯電路等組成。,6.2 MCS-51單片機(jī)的中斷系統(tǒng),6.2.1 中斷源 6.2.2 中斷控制 6.2.3 中斷處理過程,6.2.1 中斷源,8051單片機(jī)有五個(gè)中斷請求源。 兩個(gè)外部中斷源INT0、INT1; 兩個(gè)片內(nèi)定時(shí)器/計(jì)數(shù)器(T0、T1)的溢出中斷源TF0和TF1; 一個(gè)片內(nèi)串行口接收 或發(fā)送中斷源RI或TI。,6.2.1 中斷源,外部中斷源 外部中斷源是由I/O設(shè)備請求信號(hào)或掉電故障等異常事件中斷請求信號(hào)提供的。 IT0 外部中斷0請求,由P3. 2腳輸入。 通過外部中斷0
10、觸發(fā)方式控制位IT0(TCON. 0) 來決定中斷輸入信號(hào)是低電平有效還是負(fù)跳變有效。 一旦輸入信號(hào)有效,便使IE1標(biāo)志置1,向CPU申請中斷。,6.2.1 中斷源,INT1 外部中斷1請求,由P3. 3腳輸入。 通過外部中斷1觸發(fā)方式控制位IT1(TCON. 1) ,來決定中斷輸人信號(hào)是低電平有效還是負(fù)跳變有效。 一旦輸入信號(hào)有效,便使IE1標(biāo)志置1,向CPU申請中斷。,6.2.1 中斷源,2.內(nèi)部中斷源 內(nèi)部中斷源是由單片機(jī)內(nèi)部定時(shí)器溢出和串行口接收或發(fā)送數(shù)據(jù)提出的中斷申請。 TF0 定時(shí)器T0溢出中斷請求。 當(dāng)定時(shí)器T0產(chǎn)生溢出時(shí),定時(shí)器T0中斷請求標(biāo)志TF0置1,請求中斷處理。,6.2
11、.1 中斷源,TF1 定時(shí)器T1溢出中斷請求。 當(dāng)定時(shí)器T1產(chǎn)生溢出時(shí),定時(shí)器T1中斷請求標(biāo)志TF1置1,請求中斷處理。 RI或TI 串行口中斷請求。 當(dāng)串行口接收或發(fā)送完一幀數(shù)據(jù)時(shí),內(nèi)部串行口中斷請求標(biāo)志RI或TI置1,請求中斷處理。,6.2.1 中斷源,中斷請求標(biāo)志 特殊功能寄存器TCON和SCON中與中斷源有關(guān)的位; 其作用有兩種:一種是作為觸發(fā)方式控制位,控制外部中斷請求輸入信號(hào)的有效極性; 另一種是作為中斷請求標(biāo)志位,鎖存中斷源,向CPU提出中斷申請,直到GPU響應(yīng)中斷,才由硬件或軟件使相應(yīng)的標(biāo)志位清0。,6.2.1 中斷源,TCON中的中斷標(biāo)志位 TCON為定時(shí)器T0和T1的控制寄
12、存器,同時(shí)也鎖存T0和T1的溢出中斷源和外部中斷源等。 TCON的字節(jié)地址為88H,與中斷源有關(guān)的位如下:,6.2.1 中斷源,TF1 定時(shí)器T1溢出中斷標(biāo)志。 T1被允許計(jì)數(shù)以后,從初值開始加1計(jì)數(shù),直至計(jì)滿溢出時(shí)由硬件置TF1=1,向CPU請求中斷。 此標(biāo)志一直保持到CPU響應(yīng)中斷后,才由硬件自動(dòng)清0。 也可用軟件查詢該標(biāo)志,并由軟件清0。 TF0 定時(shí)器T0溢出中斷標(biāo)志。其功能、置1和清0與TF1相似。,6.2.1 中斷源,IE1 外部中斷1請求標(biāo)志。 IE1=1時(shí),外部中斷1向CPU請求中斷,當(dāng)CPU響應(yīng)該中斷時(shí),由硬件自動(dòng)清0(邊沿觸發(fā)方式)。 如果是電平觸發(fā)方式,則在CPU執(zhí)行完中
13、斷服務(wù)程序之前由外部中斷源撤消有效電平,使IE1清0。,6.2.1 中斷源,IT1 外部中斷觸發(fā)方式控制位。 當(dāng)IT1=0時(shí),外部中斷1控制為電平觸發(fā)方式。 在這種方式下,CPU在每個(gè)機(jī)器周期的S5P2期間采樣/INT1的輸入電平,當(dāng)檢測為低電平時(shí),則認(rèn)為有中斷申請,隨即使IE1標(biāo)志置1; 當(dāng)檢測為高電平時(shí),則認(rèn)為無中斷申請或中斷申請已撤除,隨即使IE1標(biāo)志清0。 在電平觸發(fā)方式中,外部中斷輸入/INT1必須保持低電平,直到CPU響應(yīng)該中斷為止,并且在該中斷服務(wù)程序執(zhí)行完畢之前,外部中斷請求信號(hào)必須撤除; 否則,將產(chǎn)生另一次中斷。,6.2.1 中斷源,當(dāng)IT1=I時(shí),外部中斷1控制為邊沿觸發(fā)方
14、式。 在這種方式下,CPU在每一個(gè)機(jī)器周期的S5P2期間采樣/INT1的輸入電平; 如果相繼的兩次采祥中,一個(gè)周期內(nèi)采樣到/INT1為高電平,接著的下一個(gè)周期內(nèi)采樣到了/INT1為低電平,則使IE1置1。此時(shí)表示外部中斷1正在向CPU申請中斷,IE1標(biāo)志一直保持到該中斷被CPU響應(yīng)時(shí)為止,才由硬件自動(dòng)清0。,6.2.1 中斷源,因?yàn)槊總€(gè)機(jī)器周期內(nèi)采樣一次外部中斷輸入電平,所以采用邊沿觸發(fā)方式時(shí),為保證CPU在兩個(gè)機(jī)器周期內(nèi)檢測到中斷請求信號(hào)由高到低的負(fù)跳變,外部中斷源輸入的高電平和低電平時(shí)間必須保持在12個(gè)振蕩周期以上。,6.2.1 中斷源,IE0 外部中斷請求標(biāo)志,其功能與IE1類似。 IT
15、0 外部中斷觸發(fā)方式控制位,其功能與IT1類似。,6.2.1 中斷源,SCON中的中斷標(biāo)志 SCON是串行口控制寄存器。 它的字節(jié)地址是98H,其低2位為鎖存串行口的接收中斷和發(fā)送中斷標(biāo)志。,6.2.1 中斷源,T1 串行口發(fā)送中斷標(biāo)志。 串行口每發(fā)送完一幀數(shù)據(jù),便由內(nèi)部硬件使T1置1,表示串行口發(fā)送器向CPU申請中斷。 CPU響應(yīng)發(fā)送器中斷諸求時(shí),并不清除T1,所以必須在中斷服務(wù)程序中用CLR T1或ANL SCON , #0FDH等指令清除T1。,6.2.1 中斷源,R1 串行口接收中斷標(biāo)志。 串行口每接收完一幀數(shù)據(jù),由內(nèi)部硬件置位R1,使R1=1,表示串行口接收器向CPU申請中斷。 CP
16、U響應(yīng)接收器中斷請求時(shí)不會(huì)清除R1,必須由用戶在中斷服務(wù)程序中用軟件使R1清0。 MCS-51單片機(jī)復(fù)位后,TCON , SCON中各位均清0。,6.2 MCS-51單片機(jī)的中斷系統(tǒng),6.2.1 中斷源 6.2.2 中斷控制 6.2.3 中斷處理過程,6.2.2 中斷控制,中斷允許和禁止 MCS-51單片機(jī)中,特殊功能寄存器IE為中斷允許寄存器,通過向IE寫入中斷控制字,控制CPU對(duì)中斷源的開放和屏蔽,以及每個(gè)中斷源是否允許中斷。 中斷允許寄存器IE的字節(jié)地址是A8H,它的格式如下;,6.2.2 中斷控制,EA EA為CPU中斷總允許位。 當(dāng)EA =1時(shí),CPU開放中斷,而每個(gè)中斷源是否允許還
17、是禁止,分別由各自的允許位確定; 當(dāng)EA=0時(shí),CPU屏蔽所有的中斷申請,稱為關(guān)中斷,或禁止中斷。 ES ES為串行口中斷允許位。 ES=1,允許串行口中斷; ES=0,禁止串行口中斷。 ET1 ET1為定時(shí)器T1中斷允許位。 ET1=1,允許T1中斷; ET1=0,禁止T1中斷。,6.2.2 中斷控制,EX1 EX1為外部中斷1中斷允許位。 EX1=1,允許外部中斷1中斷; EX1=0,禁止外部中斷1中斷。 ET0 ET0為定時(shí)器T0中斷允許位。 ET0=1,允許T0中斷; ET0=0,禁止T0中斷; EX0 EX0為外部中斷0中斷允許位。 EX0=1,允許外部中斷0中斷; EX0=0 ,禁
18、止外部中斷0中斷。,6.2.2 中斷控制,MCS-51復(fù)位后,IE清0。 由用戶程序使IE中相應(yīng)的位置1或清0,實(shí)現(xiàn)允許或禁止各中斷源的中斷請求。 欲使某一個(gè)中斷源允許中斷,則必須同時(shí)使CPU開中斷。 控制字的寫入,可用位操作指令或字節(jié)操作指令來實(shí)現(xiàn)。,6.2.2 中斷控制,中斷優(yōu)先級(jí)設(shè)定 MCS-51有兩個(gè)中斷優(yōu)先級(jí),可用軟件設(shè)置侮個(gè)中斷源為高優(yōu)先級(jí)中斷或低優(yōu)先級(jí)中斷,可實(shí)現(xiàn)二級(jí)中斷嵌套。 高優(yōu)先級(jí)中斷源可中斷正在執(zhí)行的低優(yōu)先級(jí)中斷服務(wù)程序,除非在執(zhí)行低優(yōu)先級(jí)中斷服務(wù)程序時(shí)設(shè)置了CPU關(guān)中斷或禁止某些高優(yōu)先級(jí)中斷源的中斷。,6.2.2 中斷控制,同級(jí)或低優(yōu)先級(jí)的中斷源不能中斷正在被執(zhí)行的中斷
19、服務(wù)程序,一直到中斷服務(wù)程序執(zhí)行完畢,遇到返回指令RETI返回主程序后再執(zhí)行下一條指令時(shí)才能響應(yīng)新的中斷申請。 MCS-51的中斷系統(tǒng)內(nèi)部設(shè)有兩個(gè)(用戶不能訪間)優(yōu)先級(jí)狀態(tài)觸發(fā)器; 其中一個(gè)觸發(fā)器指示某高優(yōu)先級(jí)的中斷正在執(zhí)行,所有后來的中斷都將被阻止; 另一個(gè)觸發(fā)器指示某低優(yōu)先級(jí)的中斷正在執(zhí)行,所有同級(jí)的中斷都將被阻止,但不阻斷優(yōu)先級(jí)較高的中斷。,6.2.2 中斷控制,特殊功能寄存器IP是中斷優(yōu)先級(jí)寄存器,鎖存各中斷源優(yōu)先級(jí)的控制位,控制本中斷源是高優(yōu)先級(jí)中斷還是低優(yōu)先級(jí)中斷,用戶可用軟件設(shè)定。 IP寄存器的字節(jié)地址為B8H,它的格式如下:,6.2.2 中斷控制,PS 串行口中斷優(yōu)先級(jí)控制位。
20、 PS=1,設(shè)定串行口中斷為高優(yōu)先級(jí)中斷; PS=0,串行口為低優(yōu)先級(jí)中斷。 PT1 定時(shí)器T1中斷優(yōu)先級(jí)控制位。 PT1=1,設(shè)定定時(shí)器T1為高優(yōu)先級(jí)中斷; PT1=0,定時(shí)器T1為低優(yōu)先級(jí)中斷。 PX1 外部中斷1中斷優(yōu)先級(jí)控制位。 PX1=1,設(shè)定外部中斷1為高優(yōu)先級(jí)中斷; PX1=0,外部中斷1為低優(yōu)先級(jí)中斷。,6.2.2 中斷控制,PT0 定時(shí)器T0中斷優(yōu)先級(jí)控制位。 PT0=1,設(shè)定定時(shí)器T0為高優(yōu)先級(jí)中斷; PT0=0,定時(shí)器T0為低優(yōu)先級(jí)中斷。 PX0 外部中斷0中斷優(yōu)先級(jí)控制位。 PX0=1,設(shè)定外部中斷。為高優(yōu)先級(jí)中斷; PX0=0,外部中斷。為低優(yōu)先級(jí)中斷。,6.2.2
21、中斷控制,當(dāng)系統(tǒng)復(fù)位后,IP全部清0,將所有中斷源設(shè)置為低優(yōu)先級(jí)中斷。 如果CPU同時(shí)接收到兩個(gè)不同優(yōu)先級(jí)的中斷。則處理高優(yōu)先級(jí)中斷請求。 如果CPU同時(shí)接收到幾個(gè)同一優(yōu)先級(jí)的中斷源的中斷請求,則CPU通過內(nèi)部硬件查詢邏輯電路,按查詢順序確定該響應(yīng)哪個(gè)中斷請求。 在同一級(jí)優(yōu)先級(jí)中,優(yōu)先級(jí) 排列順序如下:,6.2.2 中斷控制,這種排列順序,在實(shí)際應(yīng)用中很方便。如果重新設(shè)置了優(yōu)先級(jí),則順序查詢邏輯電路將會(huì)相應(yīng)改變排列順序。 例如,如果給IP中設(shè)置的優(yōu)先級(jí)控制字為12H,則PS和PT0均為高優(yōu)先級(jí)中斷; 但當(dāng)這兩個(gè)中斷源同時(shí)發(fā)出中斷申請時(shí),CPU將優(yōu)先響應(yīng)優(yōu)先級(jí)高的PT0的中斷申請。 這種“同一級(jí)
22、中的優(yōu)先級(jí)”只能解決相同優(yōu)先級(jí)中斷同時(shí)請求中斷的情況,而不能中斷正在執(zhí)行的同級(jí)優(yōu)先級(jí)的中斷。,6.2 MCS-51單片機(jī)的中斷系統(tǒng),6.2.1 中斷源 6.2.2 中斷控制 6.2.3 中斷處理過程,6.2.3 中斷處理過程,中斷響應(yīng) 中斷響應(yīng)是指,在CPU響應(yīng)中斷的條件得到滿足后,CPU對(duì)中斷源中斷請求的回答。 這時(shí),CPU應(yīng)實(shí)現(xiàn)保護(hù)斷點(diǎn)和尋找中斷源,把程序轉(zhuǎn)向申請中斷的中斷源服務(wù)程序的入口地址。 CPU響應(yīng)中斷的三個(gè)基本條件: 首先要有中斷源發(fā)出中斷申請; CPU開放中斷,即中斷總允許位EA=1,CPU允許所有中斷源申請中斷; 申請中斷的中斷源的中斷允許位為1,即此中斷源可以向CPU申請中
23、斷,稱為對(duì)應(yīng)中斷源中斷開放。,6.2.3 中斷處理過程,如果前述條件滿足,則CPU會(huì)響應(yīng)中斷。但是,若有下列任何一種情況存在,則中斷響應(yīng)會(huì)被阻止: CPU正在處理相同級(jí)的或更高優(yōu)先級(jí)的中斷。 現(xiàn)行機(jī)器周期不是所執(zhí)行的指令的最后一個(gè)機(jī)器周期,即在執(zhí)行的指令完成之前,任何中斷請求都得不到響應(yīng)。這樣就可保證必須是現(xiàn)行指令執(zhí)行完后才可響應(yīng)中斷。 正在執(zhí)行的指令是RETI或是訪間IE或IP的指令,此時(shí)不會(huì)馬上響應(yīng)中斷請求,而是在執(zhí)行RETI或訪間IE或IP之忘至少需要再執(zhí)行一條其他指令,才會(huì)響應(yīng)新的中斷申請,以便保證能正確返回。 若存在上述任何一種情況,CPU將丟棄中斷查詢結(jié)果; 否則,將在緊接著的下一
24、個(gè)機(jī)器周期內(nèi)執(zhí)行中斷查詢結(jié)果,響應(yīng)中斷。,6.2.3 中斷處理過程,CPU在每個(gè)機(jī)器周期的S5P2期間對(duì)各中斷源采樣,設(shè)置相應(yīng)的中斷標(biāo)志位; 并下一個(gè)機(jī)器周期S6期間按優(yōu)先級(jí)順序查詢各中斷標(biāo)志; 如查詢某個(gè)中斷標(biāo)志為1,將在再下一個(gè)機(jī)器周期S1期間按優(yōu)先級(jí)進(jìn)行中斷處理。,6.2.3 中斷處理過程,如果中斷是由于上述三種情況之一未被及時(shí)響應(yīng)。而且當(dāng)上述阻止中斷的條件被撤消之后,中斷標(biāo)志卻已經(jīng)消失了,這次中斷申請就不再會(huì)被響應(yīng)。 即是說,CPU不會(huì)記住某一中斷申請?jiān)?jīng)有效但沒有被響應(yīng)的事件。,6.2.3 中斷處理過程,中斷響應(yīng)過程 如果中斷響應(yīng)條件滿足,且不存在阻止中斷響應(yīng)的情況,則CPU將響應(yīng)中
25、斷。 CPU響應(yīng)中斷時(shí),先置位相應(yīng)的優(yōu)先級(jí)狀態(tài)觸發(fā)器,用于指示CPU開始處理的中斷優(yōu)先級(jí)別,然后由中斷系統(tǒng)通過硬件生成長調(diào)用指令LCALL; CPU執(zhí)行此指令,清除中斷請求源申請標(biāo)志(但TI和RI不清0),把斷點(diǎn)地址壓入堆棧保護(hù)起來; 然后將被響應(yīng)的中斷入口地址裝入程序計(jì)數(shù)器PC中,使CPU轉(zhuǎn)向該中斷入口地址,以執(zhí)行中斷服務(wù)程序。,6.2.3 中斷處理過程,各中斷源的中斷入口地址分配如下:,6.2.3 中斷處理過程,由上述可見,各中斷源的中斷入口地址之間只相隔8個(gè)字節(jié),一般的中斷服務(wù)程序是容納不下的; 因而在實(shí)際應(yīng)用中,通常是在中斷入口地址處存放一條無條件轉(zhuǎn)移指令(LJMP addr16),
26、addr16就是中斷服務(wù)程序的入口地址。 這樣,可以使中斷服務(wù)程序靈活地安排在64K字節(jié)程序存儲(chǔ)器的任何空間內(nèi)。,6.2.3 中斷處理過程,中斷處理和中斷返回 中斷服務(wù)程序從入口地址開始執(zhí)行,直到返回指令RETI為止。這個(gè)過程稱為中斷處理,或中斷服務(wù)。 中斷處理的具體內(nèi)容,因中斷源的要求不同而各不相同。中斷服務(wù)程序的一般流程如圖所示。,6.2.3 中斷處理過程,一般微處理器在響應(yīng)某一中斷后會(huì)自動(dòng)地關(guān)中斷,而MCS-51單片機(jī)不具備這種功能,必須在中斷服務(wù)程序中用軟件關(guān)中斷。 這樣,可以保證本中斷服務(wù)程序的迅速執(zhí)行,而不會(huì)被更高的優(yōu)先級(jí)中斷源中斷。,6.2.3 中斷處理過程,所謂“現(xiàn)場”,是指進(jìn)
27、入中斷服務(wù)程序入口地址之前,有關(guān)寄存器(如累加器A,P5W及其他寄存器)中的內(nèi)容。 如果在中斷服務(wù)程序中,也會(huì)用到這些寄存器,就會(huì)破壞它原來寄存器中的內(nèi)容,一旦返回主程序,就會(huì)造成主程序的混亂。 進(jìn)入中斷服務(wù)程序后,應(yīng)首先保護(hù)現(xiàn)場,然后再執(zhí)行中斷服務(wù)程序。 在返回主程序之前,應(yīng)恢復(fù)現(xiàn)場。 在恢復(fù)現(xiàn)場之后,中斷返回之前,用軟件開中斷,以便CPU響應(yīng)新的中斷申請。,6.2.3 中斷處理過程,RETI指令是中斷服務(wù)程序結(jié)束的標(biāo)志。 所以,中斷服務(wù)程序的最后一條指令必須是中斷返回指令 RETI。 CPU執(zhí)行這條指令之后,對(duì)中斷響應(yīng)時(shí)置1的優(yōu)先級(jí)狀態(tài)觸發(fā)器清0,然后將堆找中保護(hù)的斷點(diǎn)地址彈出到程序計(jì)數(shù)器
28、PC中,于是CPU返回?cái)帱c(diǎn)處繼續(xù)執(zhí)行主程序。,6.2.3 中斷處理過程,如果現(xiàn)場信息不需要保護(hù),則保護(hù)現(xiàn)場和恢復(fù)現(xiàn)場都可省去; 此外,對(duì)MCS-51單片機(jī)中斷嵌套的實(shí)現(xiàn),除了通過硬件和軟件來實(shí)現(xiàn)中斷優(yōu)先級(jí)外,還必須通過中斷服務(wù)程序中編程的配合來實(shí)現(xiàn)。 通常為了使現(xiàn)場信息不致受到破壞或者造成混亂、一般在保護(hù)現(xiàn)場和恢復(fù)現(xiàn)場時(shí),CPU不能響應(yīng)新的中斷請求。,6.2.3 中斷處理過程,在編寫中斷服務(wù)程序時(shí),要注意在保護(hù)現(xiàn)場之前關(guān)中斷,在保護(hù)現(xiàn)場之后再開中斷,即允許有更高優(yōu)先級(jí)的中斷打斷它; 恢復(fù)現(xiàn)場之前也要關(guān)中斷,恢復(fù)現(xiàn)場之后,中斷返回之前再開中斷。 這時(shí),中斷服務(wù)程序的編寫格式如下:,CLR EA;
29、關(guān)中斷 PUSH A;保護(hù)現(xiàn)場 PUSH R1 SETB EA;開中斷 ;中斷服務(wù) CLR EA;關(guān)中斷 POP R1;恢復(fù)現(xiàn)場 POP A SETB EA;開中斷 RETI;中斷返回,6.2.3 中斷處理過程,中斷請求的撤除 CPU響應(yīng)某中斷請求后,在中斷返回之前,必須撤除中斷請求,否則會(huì)錯(cuò)誤地引起另一次中斷發(fā)生。 對(duì)定時(shí)器T0或T1的中斷,由于CPU在響應(yīng)中斷后,內(nèi)部硬件自動(dòng)清除了相應(yīng)的中斷請求標(biāo)志TF0或TF1,所以無需采取其他措施。,6.2.3 中斷處理過程,對(duì)于邊沿觸發(fā)的外部中斷,CFU在響應(yīng)中斷后,也是由硬件自動(dòng)清除相應(yīng)的中斷請求標(biāo)志IE0或IE1,因此也無需采取其他措施。 對(duì)于電
30、平觸發(fā)的外部中斷,CPU響應(yīng)中斷時(shí)不會(huì)自動(dòng)清除中斷請求標(biāo)志IE0或IE 1、所以,在CPU響應(yīng)中斷后,應(yīng)立即撤除INTI或INT0引腳上的低電平。 對(duì)于串行口中斷,CPU響應(yīng)中斷后,內(nèi)部硬件沒有清除TI或RI,故這些中斷請求標(biāo)志不會(huì)自動(dòng)清除,必須在中斷服務(wù)程序中用軟件來清除中斷請求標(biāo)志TI或RI。,6.2.3 中斷處理過程,中斷響應(yīng)時(shí)間 中斷響應(yīng)時(shí)間:指CPU 查詢到有效中斷標(biāo)志后,PC 轉(zhuǎn)移到矢量入口的時(shí)間。 以外部中斷響應(yīng)為例,說明中斷響應(yīng)時(shí)間。CPU在每個(gè)機(jī)器周期的S5P2期間采樣/INT0和/INT1電平并鎖存到IE0或IE1標(biāo)志位上,而CPU要在下一個(gè)機(jī)器周期才會(huì)查詢這些標(biāo)志位,這時(shí)
31、如果滿足中斷響應(yīng)條件,CPU便接著執(zhí)行硬件長調(diào)用指令LCALL,轉(zhuǎn)到相應(yīng)的中斷入口。 調(diào)用指令本身需2個(gè)機(jī)器周期,這樣,從外部中斷請求有效到開始執(zhí)行中斷服務(wù)程序的第一條指令之間至少需要3個(gè)機(jī)器周期,這是最短的響應(yīng)時(shí)間。,6.2.3 中斷處理過程,如果遇到中斷響應(yīng)受阻的情況,則需要更長的響應(yīng)時(shí)間。 例如,當(dāng)一個(gè)同級(jí)或更高級(jí)中斷正在處理,則附加的等待時(shí)間取決于正在進(jìn)行的中斷服務(wù)程序。 如果正在執(zhí)行的指令還沒有進(jìn)行到最后的機(jī)器周期,則所需的附加時(shí)間不會(huì)多于3個(gè)機(jī)器周期,因?yàn)樽铋L的乘法、除法指令也只需4個(gè)機(jī)器周期; 如果正在執(zhí)行RETI或訪問IE,IP的指令,則附加的等待時(shí)間不會(huì)多于5個(gè)機(jī)器周期(完成
32、正在執(zhí)行的指令最多還需1個(gè)機(jī)器周期,加上執(zhí)行最長的指令需4個(gè)機(jī)器周期)。 這樣,在只有一個(gè)中斷源的情況下,外部中斷響應(yīng)時(shí)間總是在38個(gè)機(jī)器周期之間。,6.2.3 中斷處理過程,CPU對(duì)外部中斷申請信號(hào)的要求 如果出現(xiàn)如圖所示的外部中斷申請新號(hào),則無論是低電平觸發(fā)還是下降沿觸發(fā),都無法可靠地引起中斷。 高電平和低電平的持續(xù) 時(shí)間不可短于一個(gè)機(jī)器周 期,6.3 中斷服務(wù)應(yīng)用程序設(shè)計(jì),中斷結(jié)構(gòu)初始化:選擇觸發(fā)方式、開放中斷 理解以下指令的作用: MOV SP, # 40H SETB IT0 SETB EX0 SENB EA,6.3 中斷服務(wù)應(yīng)用程序設(shè)計(jì),中斷服務(wù)程序設(shè)計(jì) 例:利用外部中斷0、1 設(shè)計(jì)一個(gè)加1、減1 計(jì)數(shù)器 要求: 按動(dòng)開關(guān)K1 實(shí) 現(xiàn)加1 計(jì)數(shù); 按動(dòng)K2 實(shí)現(xiàn)減1 計(jì)
溫馨提示
- 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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)院崗前培訓(xùn)管理制度
- 培訓(xùn)教育學(xué)習(xí)管理制度
- 籃球培訓(xùn)班消課制度及流程
- 培訓(xùn)機(jī)構(gòu)辦學(xué)章程及制度
- 4s店維修技術(shù)培訓(xùn)制度
- 舞蹈培訓(xùn)班上課制度
- 公司外出培訓(xùn)用餐標(biāo)準(zhǔn)制度
- 培訓(xùn)機(jī)構(gòu)內(nèi)部控價(jià)制度
- 關(guān)于外部培訓(xùn)管理制度
- 武術(shù)培訓(xùn)班交費(fèi)請假制度
- GB/T 33091-2016聚氨酯篩板
- 2023年電大當(dāng)代中國政治制度機(jī)考拼音排版絕對(duì)好用按字母排序
- GB 39669-2020牙刷及口腔器具安全通用技術(shù)要求
- 精益生產(chǎn)試題與答案
- 醫(yī)院關(guān)于主治醫(yī)師晉升前到急診科、重癥醫(yī)學(xué)科輪轉(zhuǎn)鍛煉工作的管理規(guī)定
- L1會(huì)計(jì)研究方法論簡介課件
- 防治水培訓(xùn)課件
- 按摩穴位保健養(yǎng)生課件
- 食材配送投標(biāo)服務(wù)方案
- 大學(xué)生心理健康教育全套課件
- 《數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)導(dǎo)論》完整版課件(全)
評(píng)論
0/150
提交評(píng)論