89c51中斷系統及中斷控制

2021-08-20 22:18:02 字數 3720 閱讀 7517

現代的計算機都具有實時處理功能,當外界有突發事件時,cpu能夠及時的做出處理,這就是靠中斷來實現的。

當cpu正在處理某一命令時,這時外部發生了某一事件(如電平的變化,或者定時器/計數器溢位時)請求cpu去處理該事件,於是cpu停止處理當前的事件,並儲存當前停止時的位址,轉去處理所發生的事件,處理完畢後,cpu返回原先儲存的停止時的位址,繼續處理原先的事件,這樣的過程被稱為中斷。

上圖即為中斷過程示意圖,產生中斷的請求源被稱為中斷源,中斷源向cpu提出的處理請求被稱為中斷請求或中斷申請。cpu暫時中止當前的事件,轉去處理中斷請求所對應的事件稱為cpu的中斷響應過程,對事件的整個處理過程稱為中斷服務(中斷處理)。處理完畢後,返回到原先被中止的地方稱為中斷返回

因為有中斷請求時,cpu當前執行的的程式是隨機的,所以cpu在執行中斷服務程式之前,除了硬體會自動把斷點位址壓入堆疊外,還要注意保護現場資料(相關的工作暫存器,累加器,標誌位等資訊),以便於在執行完中斷服務程式之後恢復原先資料(稱為恢復現場)。

89c51微控制器的中斷系統如圖所示

89c51有5個中斷源:

int0    :外部中斷0請求,低電平有效。

int1    : 外部中斷1請求,低電平有效。

t0    : 定時/計數器0溢位中斷請求。

t1    :定時/計數器1溢位中斷請求。

txd/rxd    : 串列埠中斷請求,當串列埠傳送/接受完一幀資料時,便請求中斷。

其中 int0/1是兩個外部中斷,t0/1,txd/rxd是3個內部中斷

中斷控制

89c51有以下4個特殊功能暫存器

定時器控制暫存器tcon(用6位);

序列口控制暫存器scon(用2位);

中斷允許暫存器ie;

中斷優先順序暫存器ip.

其中,tcon和scon只有一部分位用於中斷控制。通過對以上各種特殊功能暫存器的各位進行置位或復位操作,即可實現各種中斷控制的功能。

1、tcon中的中斷標誌位

tf1 : 定時/計數器1的中斷請求標誌位,當定時/計數器溢位時,該位自動置1,並向cpu發出中斷請求,當cpu響應中斷時,硬體會自動對該位清0。當然,你也可以用「位操作指令」對tf0進行置「1」或清「0」操作。

tf0 :定時/計數器0的中斷請求標誌位,與tf1原理相同。

ie1 : 外部中斷1的中斷請求標誌位,當檢測到外部中斷引腳上存在有效的中斷請求訊號時,由硬體自動使ie1置1,當cpu響應該中斷請求時,由硬體自動使ie1清0

it1 : 外部中斷1的中斷觸發方式控制位

it1 = 0 時,外部中斷1為電平觸發方式。cpu在每乙個機器週期取樣外部中斷1請求引腳的輸入電平,若外部中斷1請求引腳為低電平,則使ie1位置1,若為高電平,則ie1清0。

it1 = 1 時,外部中斷1為邊沿觸發方式。cpu如果在兩個連續的機器週期取樣過程中,乙個為高電平。接著下乙個為低電平,那麼ie1則置1,直到cpu響應該中斷時,才由硬體使ie1位清0。

ie0 : 外部中斷0的中斷請求標誌位,與ie1原理相同。

it0 : 外部中斷0的中斷觸發方式控制位,與it1原理相同。

2、序列控制暫存器scon

ti : 序列口傳送中斷請求標誌位。cpu將資料寫入sbuf時,就啟動傳送,每傳送完一幀序列資料後,硬體自動把ti位置1,但cpu響應中斷時,並不清除ti,必須在中斷服務程式中由軟體對ti清0

ri :序列口接收中斷請求標誌位,在串列埠允許接收時,每接收完乙個序列幀,硬體自動對ri置1.同樣cpu響應中斷時不會清除ri位,必須用軟體對其清0

3、中斷允許控制暫存器ie

89c51對中斷源的開放和關閉由中斷允許暫存器控制,格式如下

中斷允許暫存器ie對中斷的開放和關閉實現兩級控制,所謂的兩級控制就是有乙個總的開關中斷控制位ea,當ea=0時,遮蔽所有的中斷申請,及任何中斷申請都不接受,當ea=1時,cpu開放中斷,但5個中斷源還有由其所對應的控制位的狀態進行中斷的允許控制。

ea : 中斷允許總控制位。 ea = 0 時,遮蔽所有的中斷請求,ea = 1時,cpu開放中斷,對於中斷源的請求是否允許還要取決於各中斷源的中斷允許控制位的狀態。

es : 序列口中斷允許控制位。es = 0時,禁止序列口中斷,es = 1時,允許序列口中斷。

et1  ;定時/計數器1的溢位中斷允許控制位。et1 = 0時,禁止t1中斷,et1 = 1時,允許t1中斷。

ex1 : 外部中斷1中斷允許控制位。ex1 = 0時,禁止外部中斷1中斷,ex1 = 1時,允許外部中斷1中斷。

et0 :  定時/計數器0的溢位中斷允許控制位。et0 = 0時,禁止t0中斷,et0 = 1時,允許t0中斷。

ex0 : 外部中斷0中斷允許控制位。ex0 = 0時,禁止外部中斷0中斷,ex0 = 1時,允許外部中斷0中斷。

4、中斷優先順序控制暫存器

89c51有兩個中斷優先順序,每乙個中斷請求源均可程式設計為高優先順序中斷和低優先順序中斷。

ps : 序列口中斷優先順序控制位,置1時,為高優先順序,置0時,為低優先順序。

pt1 : 定時/計數器1中斷優先順序控制位,控制方法同上。

px1 : 外部中斷1中斷優先順序控制位,控制方法同上。

pt0 : 定時/計數器0中斷優先順序控制位,控制方法同上。

px0 : 外部中斷0中斷優先順序控制位,控制方法同上。

當同時接收到幾個同一優先順序的中斷請求時,響應哪個中斷源則取決於內部硬體的查詢順序,如下圖所示

當cpu正在處理乙個中斷請求時,又出現了乙個優先順序比它高的中斷請求時,這時cpu會暫時中止對低優先順序中斷源的處理,保護當前斷點,轉去響應優先順序更高的中斷請求。

89c51中斷優先控制的基本原則:

高優先順序的中斷可以中斷正在響應的低優先順序的中斷,反之則不能

同優先順序中斷不能互相中斷

同一中斷優先順序中,若有多個中斷源同時請求中斷,則cpu先響應優先權高的中斷,後響應優先權低的中斷。

STC89C52中斷系統

80c51的中斷系統有5個中斷源 80c52有6個 2個優先順序,可實現二級中斷巢狀。根據它的原理圖就可以看出,80c51一共有4個暫存器 tcon,scon,ie,ip 附件有她們的詳細的暫存器示例圖。img upload attachment 88246 4f31826e 53a5 30c4 8...

6 中斷系統

外部中斷0實驗 include reg52.h 此檔案中定義了微控制器的一些特殊功能暫存器 typedef unsigned int u16 對資料型別進行宣告定義 typedef unsigned char u8 sbit k3 p3 2 定義按鍵k3 sbit led p2 0 定義p20口是l...

C51 中斷 個人筆記

控制各個中斷源的遮蔽與允許 各個中斷源的請求標誌位 有效訊號的規定 中斷號寫程式的時候要用 1.cpu同時接收到幾個中斷時,首先響應優先級別最高的中斷請求。2.正在進行的中斷過程不能被新的同級或低優先順序的中斷請求所中斷。3.正在進行的低優先順序中斷服務,能被高優先順序中斷請求所中斷。中斷源有中斷請...