———————————————————————————————————————————— 中斷的過程: 對於單片機來講,中斷是指CPU在處理某一時間A時,發生了另一事件B請求CPU立刻去處理(中斷發生);CPU暫時停止當前的工作(中斷響應),轉而去處理事件B(中斷服務),待CPU處理事件B完成後,再 ...
————————————————————————————————————————————
中斷的過程:
對於單片機來講,中斷是指CPU在處理某一時間A時,發生了另一事件B請求CPU立刻去處理(中斷發生);CPU暫時停止當前的工作(中斷響應),轉而去處理事件B(中斷服務),待CPU處理事件B完成後,再回到原來事件A被中斷的地方繼續處理事件A(中斷返回)。
① 中斷源 // 5個中斷源都有一個中斷入口地址,當某個中斷源產生中斷時,CPU響應中斷便到相應的中斷入口地址執行中斷服務程式
② 中斷的嵌套與優先順序處理
③ 中斷的響應過程
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
中斷系統結構
-
外部中斷請求源:INT0、INT1
外部中斷0(INT0)由外部引腳P3.2引入,外部中斷1(INT1)由外部引腳P3.3引入
- 內部中斷請求源:T0、T1、串口中斷
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
程式定義方式
-
定義中斷函數的一般形式
void 函數名() interrupt 中斷號 using 寄存器工作組
p.s.如果中斷函數中調用了其他函數,則被調用函數所使用的寄存器組必須與中斷函數相同。中斷函數不能參數傳遞,沒有返回值,不能直接被調用。
- 中斷序號
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
中斷優先順序
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
中斷系統寄存器
-
TCON:低4位給外部中斷請求源使用,高4位給內部中斷請求源定時器T0 T1使用
外部請求源
- IT0:INT0觸發方式控制位,可由軟體進行置位和複位。IT0=0時,INT0為低電平觸發方式。IT0=1時,INT0為負跳變觸發方式。
- IE0:INT0中斷請求標誌位。當有外部的中斷請求時,該位置1(這由硬體來完成),在CPU響應中斷後,由硬體將IE0清0。
- IT1、IE1的用途和IT0、IE0相似。
內部請求源
- TF0:定時/計數器T0溢出中斷標記,當T0產生溢出時,TF0置位。當CPU響應中斷後,硬體將TF0複位
- TR0:T0的開閉控制位,TR0=1時定時計數器打開,TR0=0時定時計數器關閉
- TF1、TR1與TF0、TR0相似。
-
SCON:低2位與串口中斷相關
內部請求源
- TI、RI:串列口發送、接收中斷
-
IE:中斷允許寄存器
- EA:中斷總控制位。EA=1,CPU開放所有中斷;EA=0,CPU禁止所有中斷。
- ES:串列口中斷控制位。ES=1,允許串列口中斷;ES=0,屏蔽串列口中斷。
- ET1:定時/計數器TI中斷控制位。ET1=1,允許T1中斷;ET1=0,禁止T1中斷。
- EX1:外部中斷1中斷控制位。EX1=1,允許外部中斷1中斷;EX1=0,禁止外部中斷1中斷。
- ET0:定時/計數器T0中斷控制位。ET0=1,允許T0中斷;ET0=0,禁止T0中斷。
- EX0:外部中斷0中斷控制位。EX0=1,允許外部中斷0中斷;EX0=0,禁止外部中斷0斷。
-
IP:中斷優先順序寄存器
在該寄存器中,優先順序分為1 0兩級,對應的位置為1則為高優先順序,位置為0則為低優先順序。執行時先將高優先順序的中斷執行完後才會執行低優先順序(同樣高優先順序情況下,按預設優先順序排)。
- PS:串列口中斷優先順序控制位
- PT1:定時器1優先順序控制位
- PX1:外部中斷1優先順序控制位
- PT0:定時器0優先順序控制位
- PX0:外部中斷0優先順序控制位
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
補充:
外部中斷的觸發方式選擇
-
電平觸發方式(低電平觸發)
CPU在每個機器周期採樣到的外部中斷輸入線的電平。在中斷服務程式返回之前,外部中斷請求輸入必須無效(即變為高電平),否則CPU返回主程式後會再次響應中斷。
適於外中斷以低電平輸入且中斷服務程式能清除外部中斷請求(即外部中斷輸入電平又變為高電平)的情況。
-
跳沿觸發方式
連續兩次採樣,一個機器周期採樣到外部中斷輸入為高,下一個機器周期採樣為低,則置"1"中斷請求標誌,直到CPU響應此中斷時,該標誌才清0。這樣不會丟失中斷,但輸入的負脈衝寬度至少保持1個機器周期。