8259A程式設計

2021-06-09 20:32:32 字數 2298 閱讀 999

乙個外部中斷請求訊號通過中斷請求線irq,傳輸到imr(中斷遮蔽暫存器),imr根據所設定的中斷遮蔽字(ocw1),決定是將其丟棄還是接受。如果可以接受,則8259a將irr(中斷請求暫存暫存器)中代表此irq的位置位,以表示此irq有中斷請求訊號,並同時向cpu的intr(中斷請求)管腳傳送乙個訊號,但cpu這時可能正在執行一條指令,因此cpu不會立即響應,而當這cpu正忙著執行某條指令時,還有可能有其餘的irq線送來中斷請求,這些請求都會接受imr的挑選,如果沒有被遮蔽,那麼這些請求也會被放到irr中,也即irr中代表它們的irq的相應位會被置1。

當cpu執行完一條指令時後,會檢查一下intr管腳是否有訊號,如果發現有訊號,就會轉到中斷服務,此時,cpu會立即向8259a晶元的inta(中斷應答)管腳傳送乙個訊號。當晶元收到此訊號後,判優部件開始工作,它在irr中,挑選優先順序最高的中斷,將中斷請求送到isr(中斷服務暫存器),也即將isr中代表此irq的位置位,並將irr中相應位置零,表明此中斷正在接受cpu的處理。同時,將它的編號寫入中斷向量暫存器ivr的低三位,這時,cpu還會送來第二個inta訊號,當收到此訊號後,晶元將ivr中的內容,也就是此中斷的中斷號送上通向cpu的資料線。

對8259a的程式設計是通過向其相應的埠傳送一系列的icw(初始化命令字)完成的。總共需要傳送四個icw,它們都分別有自己獨特的格式,而且必須按次序傳送,並且必須傳送到相應的埠,下面我們先來看看第乙個icw1的結構:

icw1:傳送到0x20(主片)及0xa0(從片)埠

7 6 5 4 3 2 1 0

0 0 0 1 m 0 c i

i位:若置位,表示icw4會被傳送。(icw4等下解釋)

c位:若清零,表示工作在級聯環境下。

m位:指出中斷請求的電平觸發模式,在pc機中,它應當被置零,表示採用「邊沿觸發模式」。

icw2:傳送到0x21(主片)及0xa1(從片)埠

7 6 5 4 3 2 1 0

a7 a6 a5 a4 a3 0 0 0

icw2用來指示出irq0使用的中斷號是什麼,因為最後三位均是零,因此要求irq0的中斷號必須是8的倍數,這又是乙個很巧妙的設計。因為irq1的中斷號就是irq0的中斷號+1,irq2的中斷號就是irq0的中斷號+2,……,irq7的中斷號就是irq0的中斷號+7,剛好填滿乙個8個的中斷向量號空間。

icw3:傳送到0x21(主片)及0xa1(從片)埠

icw3只有在級聯工作的時候才會被傳送,它主要用來建立兩個pic之間的連線,對於主片與從片,它結構是不一樣的。

(主片結構:)

7 6 5 4 3 2 1 0

irq7 irq6 irq5 irq4 irq3 irq2 irq1 irq0

上面,如果相應的位被置1,則相應的irq線就被用於與從片連線,若清零則表示被連線到外圍裝置。

(從片結構:)

7 6 5 4 3 2 1 0

0 0 0 0 0 irq

上面的irq位指出了是主片的哪乙個irq連到了從片,這需要同主片上傳送的上面的主片結構字一致。

icw4:傳送到0x21(主片)及0xa1(從片)埠

7 6 5 4 3 2 1 0

0 0 0 0 0 0 eoi 80x86

80x86位:若置位則表示工作在80x86架構下。

eoi位:若置位則表示自動清除中斷請求訊號。在pc上這位需要被清零。

ocw(操作命令字),它們用來操作8259a的優先順序、中斷遮蔽及中斷結束等控制。總共有三個ocw,它們也都有自己很獨特的格式,不過它們的傳送卻不須按固定的順序進行。

ocw1:中斷遮蔽,傳送到0x21(主片)或0xa1(從片)埠

7 6 5 4 3 2 1 0

irq7 irq6 irq5 irq4 irq3 irq2 irq1 irq0

如果相應的位置1,則表示遮蔽相應的irq請求。

ocw2:優先權控制及中斷結束命令,傳送到0x20(主片)及0xa0(從片)埠

7 6 5 4 3 2 1 0

r sl eoi 0 0 l2 l1 l0

先來看看中斷結束訊息(eoi)

eoi也是ocw2型命令中的一種,當eoi位被置1,這就是乙個eoi訊息。sl是指定級別位,如果sl被置位,則表明這是乙個指定級別的eoi訊息,這個訊息可以指定將isr中的哪一位清零,即告訴8259a應當清除哪乙個irq訊號。l2、l1、l0就用來指定irq的編號。而在實際運用中我們卻將sl及l2、l1、l0全置零。

sl置零表示這是乙個不指定級別的eoi訊息,則8259a晶元自動將isr中所有被置位的irq裡優先順序最高的清零,因為它是正在被處理及等待處理的中斷中優先順序最高的,也就一定是cpu正在處理的中斷

8259A工作原理描述

通過初始化程式設計向8259a寫入相應的初始化命令icw,可以使晶元處於乙個規定的基本工作方式,並在此方式下進行工作。8259a的初始化命令字共有4個icw1 icw4,進行初始化時要求icw1 icw4按一定的順序寫入。首先,乙個外部中斷請求訊號通過中斷請求線 irq 傳輸到 imr 中斷遮蔽暫存...

8259A究竟是做什麼的?

這類中斷有兩個特點,第一是數量很多,畢竟有很多外部裝置 第二是它們可以被遮蔽,這樣處理器就像是沒聽見 沒看見一樣,不會對它們進行處理。所以,這類硬體中斷稱為可遮蔽中斷。儘管不處理中斷就會把零件銑壞,但是否允許處理器看見該中斷,是你自己的事,這是處理器賦予你的權利。可遮蔽中斷是通過intr引腳進入處理...

彙編(8259A的初始化多片)

1 主從式8259a的初始化設定 初始化設定如下 1 中斷觸發方式 邊沿觸發 2 中斷遮蔽方式 常規遮蔽方式,即使用ocw1向imr寫屏碼 3 中斷優先順序排隊方式 固定優先順序的完全巢狀方式 4 中斷結束方式 非自動結束方式的兩種命令格式 即 不指定eoi方式 指定eoi方式 在中斷服務程式完畢時...