命令字
編程狀態 初始化命令寄存器組
CPU使用IN/OUT指令對8259A芯片進行初始化編程。完成後即進入操作態。
-
ICW1 當D4=1並且A0=0時,表示是對ICW1進行設置。
-
ICW2 當A0=1時,表示對ICW2進行設置。ICW2用於設置芯片送出中斷號的高5位。
-
ICW3 當ICW1的D1位爲1,表示需要ICW3,纔會對ICW3進行設置。
-
ICW4 若ICW1的D0位爲1,表示需要ICW4,纔會對ICW4進行設置。
操作狀態 操作命令寄存器組
-
OCW1 用來設置中斷屏蔽寄存器。
-
OCW2 用來管理中斷優先級。
-
OCW3 用於設置或清除特殊屏蔽方式和讀取寄存器狀態。當D4D3=01且地址線A0=0時,表示對OCW3進行編程。
命令字總結
8259A工作邏輯
首先CPU使用IN/OUT指令對8259A芯片進行初始化編程,爲其設定好工作方式,然後8259A進入操作模式可以處理外部中斷,此時CPU可以通過IN/OUT指令實時對8259A的工作機制進行刷新。這也是CPU命令對8259A就是這樣編程的。具體到一條CPU命令如OUT AX,21H
工作週期
1.當有外部中斷通過IR0~IR7輸入時,根據IMR狀態將其存入IRR寄存器。
2.然後8259A通過INT引腳對CPU提出外部中斷請求,若CPU同意中斷,則連續向INTR* 輸出兩個脈衝信號,若未應答則等待。
3.獲取到第一個INTR* 信號後,置位最高優先級的ISR位,並將相應的IRR位復位。
4.在第二個INTR*脈衝信號時,8259A向數據總線輸出8位中斷向量號供CPU讀取。至此一個工作週期完成。