8259A PIC

 

 


寄存器:

 IRR:Interrupt Request Register,中斷請求寄存器,共8bit,對應IR0~IR7 八個中斷管
腳。當某個管腳的中斷請求到來後,若該管腳沒有被屏蔽,IRR 中對應的bit 被置一。
表示PIC 已經收到設備的中斷請求,但還未提交給CPU。
 ISR:In Service Register,服務中寄存器,共8bit,每bit 意義同上。當IRR 中的某個中
斷請求被髮送給CPU 後,ISR 中對應的bit 被置一。表示中斷已發送給CPU,但CPU
還未處理完。
 IMR:Interrupt Mask Register,中斷屏蔽寄存器,共8bit,每bit 意義同上。用於屏蔽中
斷。當某bit 置一時,對應的中斷管腳被屏蔽。

 

PIC 的每個管腳具有優先級,以0 號管腳最高。也就說,連接號碼較小
的設備具有較高的中斷優先級。通過對PIC 的ICW 寄存器編程,可以設定起始vector 號,
以計算當前中斷的vector。

 

過程:

1、一個或多個IR 管腳上產生電平信號,若對應的中斷沒有被屏蔽,IRR 中相應的bit 被置
一。
2、PIC 拉高INT 管腳通知CPU 中斷髮生。
3、CPU 通過INTA 管腳應答PIC,表示中斷請求收到。
4、PIC 收到INTA 應答後,將IRR 中具有最高優先級的bit 清零,並設置ISR 中對應的bit。
5、CPU 通過INTA 管腳第二次發出脈衝,PIC 收到後計算最高優先級中斷的vector,並將
它提交到數據線上。
6、等待CPU 寫EOI。收到EOI 後,ISR 中最高優先級的bit 被清零。如果PIC 處於AEOI
模式,當第二個INTA 脈衝收到後,ISR 中最高優先級的bit 自動清零。

 

中斷處理程序需要注意:

1,執行速度要快。所以代碼要儘量簡潔。

2,棧內存的使用要注意節約。

發佈了58 篇原創文章 · 獲贊 0 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章