————————————————————————————————————————————
中斷的過程:
對於單片機來講,中斷是指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個機器周期。