第五章中斷系統(tǒng)1_第1頁
第五章中斷系統(tǒng)1_第2頁
第五章中斷系統(tǒng)1_第3頁
第五章中斷系統(tǒng)1_第4頁
第五章中斷系統(tǒng)1_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第五章中斷系統(tǒng)5. 1 輸入/輸出數(shù)據(jù)的傳輸控制方式一、輸入/輸出的一般概念1 引言輸入/輸出是微機系統(tǒng)與外部設(shè)備進(jìn)行信息交換的過程。輸入/輸出設(shè)備稱為外部設(shè)備,與存儲器相比,外部設(shè)備有其本身的特點,存儲器較為標(biāo)準(zhǔn),而外部設(shè)備則比較復(fù)雜,性能的離散性比較大,不同的外部設(shè)備,其結(jié)構(gòu)方式不同,有機械式、電動式、電子式等;輸入/輸出的信號類型也不相同,有數(shù)字信號,也有模擬信號;有電信號,也有非電信號;輸入/輸出信息的速率也相差很大。因此,CPU與外部設(shè)備之間的信息交換技術(shù)比較復(fù)雜。CPU與外設(shè)之間的信息交換,是通過它們之間接口電路中的I/O端口來進(jìn)行的,由于同一個外部設(shè)備與CPU之間所要傳送的信息類

2、型不同,方向不同,作用也不一樣(例如數(shù)據(jù)信息、狀態(tài)信息、控制信息、輸入/輸出等),所以接口電路中可以設(shè)置多個端口來分別處理這些不同的信息。2輸入/輸出端口的尋址方式微機系統(tǒng)采用總線結(jié)構(gòu)形式,即通過一組總線來連接組成系統(tǒng)的各個功能部件(包括CPU、內(nèi)存、I/O端口),CPU、內(nèi)存、I/O端口之間的信息交換都是通過總線來進(jìn)行的,如何區(qū)分不同的內(nèi)存單元和I/O端口,是輸入/輸出尋址方式所要討論解決的問題。 根據(jù)微機系統(tǒng)的不同,輸入/輸出的尋址方式通常有兩種形式:(1)存儲器對應(yīng)的輸入、輸出尋址方式 這種方式又稱為存儲器統(tǒng)一編址尋址方式或存儲器映象尋址方式。方法:把外設(shè)的一個端口與存儲器的一個單元作同

3、等對待,每一個I/O端口都有一個確定的端口地址,CPU與I/O端口之間的信息交換,與存儲單元的讀寫過程一樣,內(nèi)存單元與I/O端口的不同,只在于它們具有不同的的地址。 優(yōu)點:CPU對I/O端口的讀/寫操作可以使用全部存儲器的讀/寫操作指令,也可以用對存儲器的不同尋址方式來對I/O端口中的信息,直接進(jìn)行算術(shù)、邏輯運算及循環(huán)、移位等操作。內(nèi)存與外設(shè)地址的分配,可以用統(tǒng)一的分布圖。不需要專門的輸入、輸出操作指令。 缺點: 內(nèi)存與I/O端口統(tǒng)一編址時,在地址總線根數(shù)一定的情況下,使系統(tǒng)中實際可以直 接尋址的內(nèi)存單元數(shù)減少。一般情況下,系統(tǒng)中I/O端口數(shù)遠(yuǎn)小于內(nèi)存單元數(shù),所以在用直接尋址方式來尋址這些端口

4、時,要表示一個端口地址,必須用與表示內(nèi)存單元地址相同的字節(jié)數(shù),使得指令代碼較長,相應(yīng)地讀/寫執(zhí)行時間也較長,這對提高系統(tǒng)的運行速度是不利的。 3. CPU與外設(shè)之間所傳送的信息類型CPU與I/O端口之間所交換的信息,可以有下列幾種類型:數(shù)據(jù)信息:包括數(shù)字量、模擬量、開關(guān)量等,可以輸入、也可以輸出 狀態(tài)信息:這是I/O端口送給CPU的有關(guān)本端口所對應(yīng)的外設(shè)當(dāng)前狀態(tài)的信息。供CPU進(jìn)行分析、判斷、決策??刂菩畔ⅲ哼@是CPU送給I/O端口的控制命令,使相應(yīng)的外部設(shè)備完成特定的操作。 數(shù)據(jù)信息、狀態(tài)信息和控制信息是不同類型的信息,它們所起的作用也不一樣。但在8086/8088微機系統(tǒng)中,這三種不同類型

5、的信息的輸入、輸出過程是相同的。為了加以區(qū)分,可以使它們具有不同的端口地址,在端口地址相同的情況下,可以規(guī)定操作的順序,或者在輸入/輸出的數(shù)據(jù)中設(shè)置特征位。 二、 CPU與外設(shè)之間輸入/輸出數(shù)據(jù)的傳輸控制方式 CPU與外設(shè)之間傳輸數(shù)據(jù)的控制方式通常有三種:程序方式、中斷方式和DMA方式。1.程序方式指用輸入/輸出指令,來控制信息傳輸?shù)姆绞?,是一種軟件控制方式。根據(jù)程序控制的方法不同,又可以分為無條件傳送方式和條件傳送方式。 無條件傳送方式 條件:利用程控方式與外設(shè)交換信息時,如果輸入/輸出的時刻,都可以保證外設(shè)總是處于“準(zhǔn)備好”狀態(tài),則可以直接利用輸入/輸出指令進(jìn)行信息的輸入/輸出操作。圖5-

6、1如圖5-1,從硬件電路上來看:輸入:加三態(tài)緩沖器(控制端由地址譯碼信號和信號選中,CPU用IN指令)輸出:加鎖存器(控制端由地址譯碼信號和信號選中,CPU用OUT指令)這種方式下的硬、軟件設(shè)計都比較簡單,但應(yīng)用的局限性較大,因為很難保證外設(shè)在每次信息傳送時都處于“準(zhǔn)備好”狀態(tài),一般只用在諸如開關(guān)控制、七段數(shù)碼管的顯示控制等場合。 條件傳送方式又稱查詢方式,即通過程序查詢相應(yīng)設(shè)備的狀態(tài),若狀態(tài)不符合,則CPU不能進(jìn)行輸入/輸出操作,需要等待;只有當(dāng)狀態(tài)信號符合要求時,CPU才能進(jìn)行相應(yīng)的輸入/輸出操作。一般外設(shè)均可以提供一些反映其狀態(tài)的信號,如對輸入設(shè)備來說,它能夠提供“準(zhǔn)備好”(“READY

7、”)信號,“READY” 1 表示輸入數(shù)據(jù)已準(zhǔn)備好。輸出設(shè)備則提供“忙”(“BUSY”)信號,“BUSY”1表示當(dāng)前時刻不能接收CPU來的數(shù)據(jù),只有當(dāng)“BUSY”0時,才表明它可以接受來自于CPU的輸出數(shù)據(jù)。過程: 輸入操作的程序流程如圖5-2所示:對READY的狀態(tài)查詢,是通過讀狀態(tài)端口的相應(yīng)位來實現(xiàn)的,輸出的情況亦大致相同,這種傳送控制方式的最大優(yōu)點是,能夠保證輸入/輸出數(shù)據(jù)的正確性。 輸入接口以輸入設(shè)備將數(shù)據(jù)送入鎖存,發(fā)選通信號開始,READY1CPU查詢(讀READY)讀數(shù)據(jù)清除READY。見圖53。 圖52輸入操作程序流程如圖 輸出接口CPU送數(shù)據(jù)至鎖存器,發(fā)選通信號,a。通知外設(shè)取

8、數(shù)據(jù);b。BUSY輸出設(shè)備取完數(shù)據(jù)ACK清BUSYCPU查詢。見圖54圖5-3圖5-4圖5-5 優(yōu)先級問題當(dāng)CPU需對多個設(shè)備進(jìn)行查詢時,就出現(xiàn)了所謂的優(yōu)先級問題,即究竟先為哪個設(shè)備服務(wù),一般來講,在這種情況下都是采用輪流查詢的方式來解決,如圖5-5所示,這時的優(yōu)先級是很明顯的,即先查詢的設(shè)備具有較高的優(yōu)先級。但這種優(yōu)先級管理方式,也存在著一個問題,即某設(shè)備的優(yōu)先級是變化的,如當(dāng)為設(shè)備B服務(wù)以后,這時即使A已準(zhǔn)備好,它也不理睬,而是繼續(xù)查詢C,也就是說A的優(yōu)先地位并不鞏固(即不能保證隨時處于優(yōu)先)。為了保證A隨時具有較高的優(yōu)先級,可采用加標(biāo)志的方法,當(dāng)CPU為B服務(wù)完以后,先查詢A是否準(zhǔn)備好,

9、若此時發(fā)現(xiàn)A已準(zhǔn)備好,立即轉(zhuǎn)向?qū)的查詢服務(wù),而不是為C設(shè)備服務(wù)。2. 中斷傳送方式 (1)為什么要采用中斷傳送方式 從查詢式的傳輸過程可以看出,它的優(yōu)點是硬件開銷小,使用起來比較簡單。但在此方式下,CPU要不斷地查詢外設(shè)的狀態(tài),當(dāng)外設(shè)未準(zhǔn)備好時,CPU就只能循環(huán)等待,不能執(zhí)行其它程序,這樣就浪費了CPU的大量時間,降低了主機的利用率。為了解決這個矛盾,我們提出了中斷傳送方式:即當(dāng)CPU進(jìn)行主程序操作時,外設(shè)的數(shù)據(jù)已存入輸入端口的數(shù)據(jù)寄存器;或端口的數(shù)據(jù)輸出寄存器已空,由外設(shè)通過接口電路向CPU發(fā)出中斷請求信號,CPU在滿足一定的條件下,暫停執(zhí)行當(dāng)前正在執(zhí)行的主程序,轉(zhuǎn)入執(zhí)行相應(yīng)能夠進(jìn)行輸入/

10、輸出操作的子程序,待輸入/輸出操作執(zhí)行完畢之后CPU即返回繼續(xù)執(zhí)行原來被中斷的主程序。這樣CPU就避免了把大量時間耗費在等待、查詢狀態(tài)信號的操作上,使其工作效率得以大大地提高。能夠向CPU發(fā)出中斷請求的設(shè)備或事件稱為中斷源。微機系統(tǒng)引入中斷機制后,使CPU與外設(shè)(甚至多個外設(shè))處于并行工作狀態(tài),便于實現(xiàn)信息的實時處理和系統(tǒng)的故障處理。中斷方式的原理示意圖如圖5-6所示。 (2)中斷方式下的接口電路 圖5-6中斷方式提高了CPU的工作效率,但是它同時也提高了系統(tǒng)的硬件開銷。因為系統(tǒng)需增加含有中斷功能接口電路,用來產(chǎn)生中斷請求信號。以輸入方式為例,接口電路如圖57所示。圖5-7數(shù)據(jù)輸入的過程:當(dāng)外

11、設(shè)發(fā)STB數(shù)據(jù)入鎖存器,中斷請求觸發(fā)器置1若沒有屏蔽則產(chǎn)生INTRCPU滿足條件(允許中斷;指令執(zhí)行完)發(fā)(進(jìn)入中斷服務(wù)子程序)讀數(shù)據(jù),發(fā),和地址清中斷請求觸發(fā)器,數(shù)據(jù)送D0D7。(3)中斷優(yōu)先級問題的提出:當(dāng)系統(tǒng)中有多個設(shè)備提出中斷請求時,就有一個該響應(yīng)誰的問題,也就是一個優(yōu)先級的問題,解決優(yōu)先級的問題一般可有三種方法:軟件查詢法、簡單硬件方法及專用硬件方法。下面分別介紹:軟件查詢法只需有簡單的硬件電路,如將A、B、C三臺設(shè)備的中斷請求信號“或”后作為系統(tǒng)INTR,這時,A、B、C三臺設(shè)備中只要至少有一臺設(shè)備提出中斷請求,都可以向CPU發(fā)中斷請求。進(jìn)入中斷服務(wù)子程序后,再用軟件查詢的方式分別

12、對不同的設(shè)備的服務(wù),查詢程序的設(shè)計思想同查詢式,查詢的前后順序就給出了設(shè)備的優(yōu)先級,框圖如圖所示。簡單硬件方法以鏈?zhǔn)街袛鄡?yōu)先權(quán)排隊電路為例,基本設(shè)計思想:將所有的設(shè)備連成一條鏈,靠近CPU的設(shè)備優(yōu)先級最高,越遠(yuǎn)的設(shè)備優(yōu)先級別越低,則發(fā)出中斷響應(yīng)信號,若級別高的設(shè)備發(fā)出了中斷請求,在它接到中斷響應(yīng)信號的同時,封鎖其后的較低級設(shè)備使得它們的中斷請求不能響應(yīng),只有等它的中斷服務(wù)結(jié)束以后才開放,允許為低級的設(shè)備服務(wù)。如圖所示。專用硬件方式采用可編程的中斷控制器芯片,如Intel8259A。圖5-11中斷控制器的系統(tǒng)連接有了中斷控制器以后,CPU的INTR和引腳不再與接口直接相連,而是與中斷控制器相連,

13、外設(shè)的中斷請求信號通過IR0IR7進(jìn)入中斷控制器,經(jīng)優(yōu)先級管理邏輯確認(rèn)為級別最高的那個請求的類型號會經(jīng)過中斷類型寄存器在當(dāng)前中斷服務(wù)寄存器的某位上置1,并向CPU發(fā)INTR請求,CPU發(fā)出信號后,中斷控制器將中斷類型碼送出。在整個過程中,優(yōu)先級較低的中斷請求都受到阻塞,直到較高級的中斷服務(wù)完畢之后,當(dāng)前服務(wù)寄存器的對應(yīng)位清0,較低級的中斷請求才有可能被響應(yīng)。電路如圖圖5-11所示。利用中斷控制器可以通過編程來設(shè)置或改變其工作方式,使用起來方便靈活。(4).中斷響應(yīng) 中斷源向CPU發(fā)出中斷請求,若優(yōu)先級別最高,CPU在滿足一定的條件下,可以中斷當(dāng)前程序的運行,保護(hù)好被中斷的主程序的斷點及現(xiàn)場信息

14、。然后,根據(jù)中斷源提供的信息,找到中斷服務(wù)子程序的入口地址,轉(zhuǎn)去執(zhí)行新的程序段,這就是中斷響應(yīng)。注意:CPU響應(yīng)中斷是有條件的,如內(nèi)部允許中斷、中斷未被屏蔽、當(dāng)前指令執(zhí)行完等。(5)中斷服務(wù)子程序CPU響應(yīng)中斷以后,就會中止當(dāng)前的程序,轉(zhuǎn)去執(zhí)行一個中斷服務(wù)子程序,以完成為相應(yīng)設(shè)備的服務(wù)。中斷服務(wù)子程序的一般結(jié)構(gòu)如圖5-12所示。保護(hù)現(xiàn)場(由一系列的PUSH指令完成)。目的是為了保護(hù)那些與主程序中有沖突的寄存器,(如AX,BX,CX等),如果中斷服務(wù)子程序中所使用的寄存器與主程序中所使用的寄存器等沒有沖突的話,這一步驟可以省略。 開中斷(由STI指令實現(xiàn))。目的是為了能實現(xiàn)中斷的嵌套。 中斷服務(wù)

15、 圖5-12中斷服務(wù)子程序的流程 恢復(fù)現(xiàn)場(由一系列的POP指令完成)。是與保護(hù)現(xiàn)場對應(yīng)的,但要注意數(shù)據(jù)恢復(fù)的次序,以免混亂。 返回(使用中斷返回指令I(lǐng)RET)。不能使用一般的子程序返回指令RET,因為IRET指令除了能恢復(fù)斷點地址外,還能恢復(fù)中斷響應(yīng)時的標(biāo)志寄存器的值,而這后一個動作是RET指令不能完成的。 中斷的工作過程可分為五大步驟:即中斷請求、中斷判優(yōu)、中斷響應(yīng)、中斷服務(wù)和中斷返回。 3. DMA傳送方式利用中斷進(jìn)行信息傳送,可以大大提高CPU的利用率,但是其傳送過程必須由CPU進(jìn)行監(jiān)控。每次中斷,CPU都必須進(jìn)行斷點及現(xiàn)場信息的保護(hù)和恢復(fù)操作,這些都是一些額外的操作,會占用一定的CP

16、U時間。如果需要在內(nèi)存的不同區(qū)域之間,或者在內(nèi)存與外設(shè)端口之間進(jìn)行大量信息快速傳送的話,用查詢或中斷方式均不能滿足速度上的要求,這時應(yīng)采用直接數(shù)據(jù)通道傳送,即DMA數(shù)據(jù)傳送方式。DMA(Direct Memory Access)意為直接數(shù)據(jù)傳送,它是在內(nèi)存的不同區(qū)域之間,或者在內(nèi)存與外設(shè)端口之間直接進(jìn)行數(shù)據(jù)傳送,而不經(jīng)過CPU中轉(zhuǎn)的一種數(shù)據(jù)傳送方式,可以大大提高信息的傳送速度。DMA方式傳送的主要步驟 (見圖5-13的流程圖)外設(shè)準(zhǔn)備就緒時,向DMA控制器發(fā)DMA請求,DMA控制器接到此信號后,向CPU發(fā)DMA請求;CPU接到HOLD請求后,如果條件允許(一個總線操作結(jié)束),則發(fā)出HLDA信號

17、作為響應(yīng),同時,放棄對總線的控制;DMA控制器取得總線控制權(quán)后,往地址總線發(fā)送地址信號,每傳送1個字節(jié),就會自動修改地址寄存器的內(nèi)容,以指向下一個要傳送的字節(jié);每傳送一個字節(jié),字節(jié)計數(shù)器的值減1,當(dāng)減到0時,DMA過程結(jié)束; 圖5-13DMA的工作流程圖DMA控制器向CPU發(fā)結(jié)束信號,將總線控制權(quán)交回CPU。DMA傳送控制方式,解決了在內(nèi)存的不同區(qū)域之間,或者內(nèi)存與外設(shè)之間大量數(shù)據(jù)的快速傳送問題,代價是需要增加專門的硬件控制電路,稱為DMA控制器,其復(fù)雜程度與CPU相當(dāng)。5. 2 8086/8088中斷系統(tǒng)一、中斷分類及中斷類型碼中斷源:引起中斷的原因或發(fā)出中斷請求的設(shè)備稱為中斷源。1 中斷的

18、分類共分為兩類:硬件中斷和軟件中斷硬件中斷:即通過外部的硬件產(chǎn)生的中斷,如打印機、鍵盤等,有時也稱為外部中斷。硬件中斷又可分為兩類:可屏蔽中斷和不可屏蔽中斷。不可屏蔽中斷:由NMI引腳引入,它不受中斷允許標(biāo)志的影響,每個系統(tǒng)中僅允許有一個,都是用來處理緊急情況的,如掉電處理。這種中斷一旦發(fā)生,系統(tǒng)會立即響應(yīng);可屏蔽中斷:由INTR引腳引入,它受中斷允許標(biāo)志的影響,也就是說,只有當(dāng)IF1時,可屏蔽中斷才能進(jìn)入,反之則不允許進(jìn)入,可屏蔽中斷可有多個,一般是通過優(yōu)先級排隊,從多個中斷源中選出一個進(jìn)行處理。軟件中斷(內(nèi)部中斷):即根據(jù)某條指令或者對標(biāo)志寄存器中某個標(biāo)志的設(shè)置而產(chǎn)生,它與硬件電路無關(guān),常

19、見的如除數(shù)為0,或用INT n指令產(chǎn)生。溢出中斷由INT0指令引起斷點中斷由INT3指令引起單步由標(biāo)志TF引起 不對應(yīng)指令除0由計算結(jié)果引起不對應(yīng)指令2 中斷類型碼:8086/8088為每個中斷源分配了一個中斷類型碼,其取值范圍為0255,即可處理56種中斷。其中包括軟件中斷,系統(tǒng)占用的中斷以及開放給用戶使用的中斷。二、中斷向量和中斷向量表系統(tǒng)處理中斷的方法很多,處理中斷的步驟中最主要的一步就是如何根據(jù)不同的中斷源進(jìn)入相應(yīng)的中斷服務(wù)子程序,目前用的最多的就是向量式中斷。中斷向量:把各個中斷服務(wù)子程序的入口都稱為一個中斷向量;中斷向量表:將這些中斷向量按一定的規(guī)律排列成一個表,就是所謂的中斷向量

20、表,當(dāng)中斷源發(fā)出中斷請求時,即可查找該表,找出其中斷向量,就可轉(zhuǎn)入相應(yīng)的中斷服務(wù)子程序。8086/8088中斷系統(tǒng)中的中斷向量表是位于0段的03FFFH的存貯區(qū)內(nèi),每個中斷向量占四個單元,其中前兩個單元存放中斷處理子程序的入口地址的偏移量(IP),低位在前,高位在后;后兩個單元存放中斷處理子程序入口地址的段地址(CS),也是低位在前,高位在后,整個中斷向量的排列是按中斷類型號進(jìn)行的。見P圖5-14。圖示給出了中斷類型碼與中斷向量所在位置之間的對應(yīng)關(guān)系。其中00H04H為專用中斷,05H3FH為系統(tǒng)保留中斷,用戶一般是不能對它們定義的(這里面有一些為固定的用途,如INT21H即為MSDOS 圖5

21、-14的系統(tǒng)調(diào)用),40FF為用戶定義的中斷。00H04H系統(tǒng)專用10H1FHBIOS用40HFFH用戶用08H0FH硬件中斷20H3FHDOS用中斷類型號4即可計算某個中斷類型的中斷向量在整個中斷向量表中的位置。如類型號為20H,則中斷向量的存放位置為20H480H,(設(shè)中斷服務(wù)子程序的入口地址為4030:2010,則在0000:0080H0000:0083H中就應(yīng)順序放入10H、20H、30H、40H。當(dāng)系統(tǒng)響應(yīng)20H號中斷時,會自動查找中斷向量,找出對應(yīng)的中斷向量裝入CS、IP,即轉(zhuǎn)入該中斷服務(wù)子程序。三、中斷響應(yīng)過程與時序8086/8088對軟件中斷和硬件中斷響應(yīng)的過程是不同的,這是由

22、于軟件中斷和硬件中斷所產(chǎn)生的原因不同,下面主要討論硬件中斷的情況。1 硬件中斷的響應(yīng)過程硬件中斷指的是由NMI引腳進(jìn)入的非屏蔽中斷或由INTR引腳進(jìn)入的可屏蔽中斷。下面以可屏蔽中斷為例。CPU在INTR引腳上接到一個中斷請求信號,如果此時IF1,CPU就會在當(dāng)前指令執(zhí)行完以后開始響應(yīng)外部的中斷請求,這時,CPU在引腳連續(xù)發(fā)兩個負(fù)脈沖,外設(shè)在接到第二個負(fù)脈沖以后,在數(shù)據(jù)線上發(fā)送中斷類型碼,接到這個中斷類型碼后,CPU做如下動作:將中斷類型碼放入暫存器保存;將標(biāo)志寄存器內(nèi)容壓入堆棧,以保護(hù)中斷時的狀態(tài);將IF和TF標(biāo)志清0,目的是防止在中斷響應(yīng)的同時又來別的中斷,而將TF清0是為了防止CPU以單步

23、方式執(zhí)行中斷處理子程序。這時要特別提醒,因為CPU在中斷響應(yīng)時自動關(guān)閉了IF標(biāo)志,因此用戶如要進(jìn)行中斷嵌套時,必須在自己的中斷處理子程序中用開中斷指令來重新設(shè)置IF;保護(hù)斷點,斷點指的是在響應(yīng)中斷時,主程序當(dāng)前指令下面的一條指令的地址。因此保護(hù)斷點的動作就是將當(dāng)前的IP和CS的內(nèi)容入棧,保護(hù)斷點是為了以后正確地返回主程序;根據(jù)取到的中斷類型碼,在中斷向量表中找出相應(yīng)的中斷向量,將其裝入IP和CS,即呆自動轉(zhuǎn)向中斷服務(wù)子程序。對NMI進(jìn)入的中斷請求,由于其類型碼固定為2,因此CPU不用從外設(shè)讀取類型碼,也不需計算中斷向量表的地址,只要將中斷向量表中0000:0008H0000:000BH單元內(nèi)容

24、分別裝入IP和CS即可。圖5-15給出了8086/8088中斷響應(yīng)過程的流程圖,對這個圖我們做幾點說明:8086/8088除軟件中斷外,內(nèi)部“非屏蔽中斷”、“可屏蔽中斷”均設(shè)立有優(yōu)先級,其中內(nèi)中(除單步外)即0、1、3、4號中斷的優(yōu)先級高于非屏蔽中斷,非屏蔽中斷高于可屏蔽中斷,單步中斷優(yōu)先級最低;只有在可屏蔽中斷的情況下才判IF1?,才取中斷類型碼,其余的沒有這個動作。關(guān)于單步中斷,它是每執(zhí)行一條指令中斷一次,顯示出當(dāng)時各寄存器的內(nèi)容,供用戶參考,當(dāng)進(jìn)入單步中斷響應(yīng)時,CPU自動清除了TF,在中斷返回后,由于恢復(fù)了響應(yīng)時的標(biāo)志寄存器的值,因此TF1,執(zhí)行完一條指令后又進(jìn)入單步中斷,直到程序?qū)

25、F改為0為止。關(guān)于中斷的嵌套,NMI總是可以響應(yīng)的,若在中斷處理子程序中設(shè)立了開中斷指令,INTR的請求也能響應(yīng)。彈出IP、CS、標(biāo)志,返回斷點的動作由IRET指令完成。有些情況下,即使條件滿足,CPU也不能馬上響應(yīng)中斷,必須執(zhí)行完下一條指令(而不是當(dāng)前指令)才行。 正好執(zhí)行LOCK指令; 執(zhí)行往SS寄存器賦值的傳送指令,因為一般要求連續(xù)用兩條指令對SS和SP寄存器賦值,以保證堆棧指針的正確性。當(dāng)遇到等待指令或串操作指令時,允許在指令執(zhí)行的過程中進(jìn)入中斷。這時需注意在中斷處理子程序中保護(hù)現(xiàn)場,以保證中斷返回后能繼續(xù)正確地執(zhí)行這些指令。圖5-15中斷響應(yīng)流程圖2 硬件中斷的時序圖5-168086

26、/8088中斷響應(yīng)總線周期要求INTR信號是一個高電平信號,并且維持2個T,因為CPU是在一條指令的最后一個T采樣INTR,進(jìn)入中斷響應(yīng)后,它在第一個總線周期的T1仍需采樣INTR。當(dāng)8086工作在最小模式時,從發(fā)出中斷響應(yīng)信號,而在最大模式進(jìn),則是通過、的組合完成。第一個總線周期用來通知外設(shè),CPU準(zhǔn)備響應(yīng)中斷,第二個總線周期,接收外設(shè)發(fā)回的中斷類型碼,該類型碼必須通過16位數(shù)據(jù)總線的低8位傳送。在中斷響應(yīng)總線周期,為低,數(shù)據(jù)/地址線浮空,和地址/狀態(tài)線均浮空,中間的三個空閑周期也可為兩個或沒有(8088)。3 軟件中斷即通過中斷指令來使CPU執(zhí)行中斷處理子程序的方法,特點如下:中斷類型碼由

27、指令提供,不需執(zhí)行中斷響應(yīng)總線周期,也不受IF標(biāo)志的影響。正在執(zhí)行軟件中斷時,若來NMI,則立即響應(yīng),若來可屏蔽中斷,只要條件允許(如IF1,當(dāng)前指令執(zhí)行完)也可響應(yīng)。軟件中斷,由于其處理程序是定位裝配的(中斷向量表),又可方便地用INT n指令調(diào)用,因此在使用中和一般的子程序沒有兩樣,并且原則上是0255種類型均可使用。 5.3 中斷控制器Intel8259A5.3 中斷控制器Intel8259A Intel 8259A是8088/8086微機系統(tǒng)的中斷控制器件,它具有對外設(shè)中斷源進(jìn)行管理,并向CPU轉(zhuǎn)達(dá)中斷請求的能力。一、 8259A的性能概述 1.具有8級中斷優(yōu)先控制,通過級連可以擴展至

28、64級優(yōu)先權(quán)控制 2.每一級中斷都可以通過初始設(shè)置為允許或屏蔽狀態(tài) 3.8259A的工作方式,可以通過變成設(shè)置,因此,使用非常靈活 4.8259A采用NMOS制造工藝,只需要單一的+5V電源二、 8259A的內(nèi)部結(jié)構(gòu)和工作原理下面,我們來討論8259A的內(nèi)部結(jié)構(gòu),并進(jìn)而分析它的工作原理,8259A的內(nèi)部結(jié)構(gòu)如圖5-18所示,它主要由下列主要部分組成: 圖5-188259A的內(nèi)部結(jié)構(gòu)1.數(shù)據(jù)總線緩沖器:它是8259A與系統(tǒng)數(shù)據(jù)總線的接口,是8位雙向三態(tài)緩沖器。CPU與8259A之間的控制命令信息、狀態(tài)信息以及中斷類型信息,都是通過該緩沖器傳送的。2.讀/寫控制邏輯:CPU通過它實現(xiàn)對8259A的

29、讀/寫操作。3.級連緩沖器:用以實現(xiàn)8259A芯片之間的級連,使得中斷源可以由8級擴展至64級。4.控制邏輯電路:對整個芯片內(nèi)部各部件的工作進(jìn)行協(xié)調(diào)和控制。5.中斷請求寄存器IRR:8位,用以分別保存8個中斷請求信號,當(dāng)相應(yīng)的中斷請求輸入引腳有中斷請求時,該寄存器的相應(yīng)位置1。6.中斷屏蔽寄存器IMR:8位,相應(yīng)位用以對8個中斷源的中斷請求信號進(jìn)行屏蔽控制。當(dāng)其中某位置”0”時,則相應(yīng)的中斷請求可以向CPU提出;否則,相應(yīng)的中斷請求被屏蔽,即不允許向CPU提出中斷請求。該寄存器的內(nèi)容為8259A的操作命令字OCW1,可以由程序設(shè)置或改變。7.中斷服務(wù)寄存器ISR:8位,當(dāng)CPU正在處理某個中斷

30、源的中斷請求時,ISR寄存器中的相應(yīng)位置1。8.優(yōu)先級比較器:用以比較正在處理的中斷和剛剛進(jìn)入的中斷請求之間的優(yōu)先級別,以決定是否產(chǎn)生多重中斷或中斷嵌套。三、 8259A的外部引腳 8259A是具有28個引腳的集成電路芯片,這28個引腳分別是: 1.D7-D0:雙向數(shù)據(jù)輸入/輸出引腳,用以與CPU進(jìn)行信息交換。 2.IR7-IR0:8級中斷請求信號輸入引腳,規(guī)定的優(yōu)先級為IR0IR1IR7, 當(dāng)有多片8259A形成級連時,從片的INT與主片的IRi相連。 3.INT:中斷請求信號輸出引腳,高電平有效,用以向CPU發(fā)中斷請求,應(yīng)接 在CPU的INTR輸入端。 4.:中斷響應(yīng)應(yīng)答信號輸入引腳,低電

31、平有效,在CPU發(fā)出第二個 時,8259A將其中最高級別的中斷請求的中斷類型碼送出;應(yīng)接在CPU 的中斷應(yīng)答信號輸出端。 5.:讀控制信號輸入引腳,低電平有效,實現(xiàn)對8259A內(nèi)部有關(guān)寄存器內(nèi) 容的讀操作。 6. :寫控制信號輸入引腳,低電平有效,實現(xiàn)對8259A內(nèi)部有關(guān)寄存器的 寫操作。 7. :片選信號輸入引腳,低電平有效,一般由系統(tǒng)地址總線的高位,經(jīng)譯 碼后形成,決定了8259A的端口地址范圍。 8. A0:8259A兩組內(nèi)部寄存器的選擇信號輸入引腳,決定8259A的端口地址。 A00ICW1、OCW2、OCW3; A01 ICW2ICW4、OCW19. CAS2-CAS0:級連信號引腳

32、,當(dāng)8259A為主片時,為輸出;否則為輸入,與 信號配合,實現(xiàn)芯片的級連,這三個引腳信號的不同組合000 111,剛好對應(yīng)于8個從片。10. :為級連管理信號輸入引腳,在非緩沖方式下,若8259A在系 統(tǒng)中作從片使用,則;否則;在緩沖方式下,用作8259A 外部數(shù)據(jù)總線緩沖器的啟動信號。11. +5V、GND:電源和接地引腳四、 8259A的工作過程1.當(dāng)有一條或若干條中斷請求輸入(IR7-IR0)有效時,則使中斷請求寄存器的 IRR的相應(yīng)位置位。2.若CPU處于開中斷狀態(tài),則在當(dāng)前指令執(zhí)行完之后,響應(yīng)中斷,并且從 發(fā)應(yīng)答信號(兩個連續(xù)的負(fù)脈沖)。3.第一個負(fù)脈沖到達(dá)時,IRR的鎖存功能失效,

33、對于IR7-IR0上發(fā)來的中 斷請求信號不予理睬。4.使正服務(wù)寄存器ISR的相應(yīng)位置1,以便為中斷優(yōu)先級比較器的工作做好準(zhǔn) 備。5.使寄存器的相應(yīng)位復(fù)位,即清除中斷請求。6.第二個負(fù)脈沖到達(dá)時,將中斷類型寄存器中的內(nèi)容ICW2,送到數(shù)據(jù)總線 的D7-D0上,CPU以此作為相應(yīng)中斷的類型碼。7.若ICW4中的中斷結(jié)束位為1,那么,第二個負(fù)脈沖結(jié)束時,8259A將ISR 寄存器的相應(yīng)位清零。否則,直至中斷服務(wù)程序執(zhí)行完畢,才能通過輸出操 作命令字EOI,使該位復(fù)位。五、 8259A的工作方式 8259A有多種工作方式,這些工作方式,可以通過編程設(shè)置或改變。下面,我們進(jìn)行分類介紹。1.優(yōu)先權(quán)的管理方

34、式(1).全嵌套方式這是8259A默認(rèn)的優(yōu)先權(quán)設(shè)置方式,在全嵌套方式下,8259A所管理的8級中斷優(yōu)先權(quán)是固定不變的,其中IR0的中斷優(yōu)先級最高,IR7的中斷優(yōu)先級最低。CPU響應(yīng)中斷后,請求中斷的中斷源中,優(yōu)先級最高的中斷源,在中斷服務(wù)寄存器ISR中的相應(yīng)位置位,而且把它的中斷矢量送至系統(tǒng)數(shù)據(jù)總線,在此中斷源的中斷服務(wù)完成之前,與它同級或優(yōu)先級低的中斷源的中斷請求被屏蔽,只有優(yōu)先級比它高的中斷源的中斷請求才是運算的,從而出現(xiàn)中斷嵌套。(2).特殊全嵌套方式 特殊全嵌套方式與全嵌套方式基本相同,所不同的是,當(dāng)CPU處理某一級中斷時,如果有同級中斷請求,那么CPU也會作出響應(yīng),從而形成了對同一級

35、中斷的特殊嵌套。特殊全嵌套方式通常應(yīng)用在有8259A級連的系統(tǒng)中,在這種情況下,對主8259A編程時,通常使它工作在特殊全嵌套方式下。這樣,一方面,CPU對于優(yōu)先級別較高的主片的中斷輸入是允許的,另一方面,CPU對于來自同一從片的優(yōu)先級別較高(但對于主片來講,優(yōu)先級別是相同的)的中斷也是允許、能夠響應(yīng)的。(3).優(yōu)先級自動循環(huán)方式在實際應(yīng)用中,中斷源優(yōu)先級的情況是比較復(fù)雜的,要求8級中斷的優(yōu)先級在系統(tǒng)工作過程中,可以動態(tài)改變。即一個中斷源的中斷請求被響應(yīng)之后,其優(yōu)先級自動降為最低。系統(tǒng)啟動時,8級中斷優(yōu)先級默認(rèn)為IR0IR7,這時,剛好IR4發(fā)出了中斷請求,CPU響應(yīng)之后,若8259A工作在優(yōu)

36、先級自動循環(huán)方式下,則中斷優(yōu)先級自動變?yōu)镮R5、IR6、IR7、IR0、IR1、IR2、IR3、IR4。(4).優(yōu)先級特殊循環(huán)方式優(yōu)先級特殊循環(huán)方式與自動循環(huán)方式相比,只有一點不同,即初始化的優(yōu)先級是由程序控制的,而不是默認(rèn)的IR0IR7。2.中斷源的屏蔽方式CPU對于8259A提出的中斷請求,都可以加以屏蔽控制,屏蔽控制有下列幾種方式:(1).普通屏蔽方式:8259A的每個中斷請求輸入,都要受到屏蔽寄存器中相應(yīng)位的控制。若相應(yīng)位為“1”,則中斷請求不能送CPU。屏蔽是通過對屏蔽寄存器IMR的編程(操作命令字OCW1),來加以設(shè)置和改變的。(2).特殊屏蔽方式:有些場合下,希望一個中斷服務(wù)程序

37、的運行過程中,能動態(tài)地改變系統(tǒng)中的中斷優(yōu)先級結(jié)構(gòu),即在中斷處理的一部分,禁止低級中斷,而在中斷處理的另一部分,又能夠允許低級中斷,于是引入了對中斷的特殊屏蔽方式。設(shè)置了特殊屏蔽方式后,用OCW1對屏蔽寄存器中的某一位復(fù)位時,同時也會是中斷服務(wù)寄存器ISR中的相應(yīng)位復(fù)位,這樣就不只屏蔽了正在處理的等級中斷,而且真正開放了其它優(yōu)先級別叫低的中斷請求。特殊屏蔽是在中斷處理程序中使用的,用了這種方式之后,盡管系統(tǒng)正在處理高級中斷,但對外界來講,只有同級中斷被屏蔽,而允許其它任何級別的中斷請求。3.結(jié)束中斷處理的方式按照對中斷結(jié)束(復(fù)位中斷響應(yīng)寄存器ISR中相應(yīng)位)的不同處理,8259A有兩種工作方式,即自動結(jié)束方式(AEI)和非自動結(jié)束方式。而非自動結(jié)束方式又可進(jìn)一步分為一般的中斷結(jié)束方式和特殊的中斷結(jié)束方式。(1).中斷自動結(jié)束方式這種方式僅適用于只有單片8259A的場合,在這種方式下,系統(tǒng)一旦響應(yīng)中斷,那么CPU在發(fā)第二個INTA脈沖時,就會使中斷響應(yīng)寄存器ISR中相應(yīng)位復(fù)位,這樣一來,雖然系統(tǒng)在進(jìn)行中斷處理,但對于8259A來講,ISR沒有相應(yīng)的指示,就象中斷處理結(jié)束,返回主程序之后一樣。CPU可以再次響應(yīng)任何級別的中斷請求。(2).一般的中斷結(jié)束方式一般的中斷結(jié)束方式適用用在全嵌套的情況下,當(dāng)CPU用輸出指令向8259A發(fā)一般中斷中斷結(jié)束命

溫馨提示

  • 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

提交評論