嵌入式微控制器,外部中斷,中斷標誌位介紹
阿新 • • 發佈:2019-01-12
INT0 | INT1 | INT2 | 說明 | |
上升沿觸發 | Yes | Yes | Yes(非同步) |
|
下降沿觸發 | Yes | Yes | Yes(非同步) | |
任意電平變化觸發 | Yes | Yes | —— | |
低電平觸發 | Yes | Yes | —— | 無中斷標誌 |
與外部中斷相關的暫存器和標誌位 除了暫存器SREG中的全域性中斷允許標誌位I外,與外部中斷有關的暫存器有4個,共有11個標誌位。其作用分別是3個外部中斷各自的中斷標誌位,中斷允許控制位,和用於定義外部中斷的觸發型別。 1)、MCU控制暫存器——MCUCR MCU控制暫存器MCUCR的低4位為INT0(ISCO1,ISC00)和INT1(ISC11、ISC10)中斷觸發型別控制位,中斷觸發方式:
位 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
$35($0055) | SM2 | SE | SM1 | SM0 | ISC11 | ISC10 | ISC01 | ISC00 |
讀/寫 | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
初始化值 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
INT0、INT1的中斷觸發方式
ISCn1 | ISCn0 | 中斷觸發方式 |
0 | 0 | INTn的低電平產生一箇中斷請求 |
0 | 1 | INTn的下降沿和上升沿都產生一箇中斷請求 |
1 | 0 | INTn的下降沿產生一箇中斷請求 |
1 | 1 | INTn的上升沿產生一箇中斷請求 |
2)、MCU控制和狀態暫存器——MCUCSR MCU控制和狀態暫存器MCUCSR中的第6位(ISC2)為INT2的中斷觸發型別控制位
位 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
$34($0054) | JTD | ISC2 | —— | JTRF | WDRF | BORF | EXTPF | PORF |
讀/寫 | R/W | R/W | R | R/W | R/W | R/W | R/W | R/W |
初始化值 | 0 | 0 | 0 | 復位標誌 | 復位標誌 | 復位標誌 | 復位標誌 | 復位標誌 |
ISC2 | 中斷觸發方式 |
0 | INT2的下降沿產生一個非同步中斷請求 |
1 | INT2的上升沿產生一個非同步中斷請求 |
3)、通用中斷控制暫存器——GICR 通用中斷控制暫存器GICR的高3位為INT0、INT1和INT2的中斷允許控制位,如果SREG暫存器中的全域性中斷I位為“1”,以及GICR暫存器中相應的中斷允許位別置為“1”,當外部引腳INT0(或INT1、或INT2)上的電平變化時,MCU將會響應相應的中斷請求。
位 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
$3B($005B) | INT1 | INT0 | INT2 | —— | —— | —— | IVSEL | IVCE |
讀/寫 | R/W | R/W | R/W | R | R | R | R/W | R/W |
初始化值 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
4)、通用中斷標誌暫存器——GIFR 通用中斷標誌暫存器GIFR的高3位為INT0、INT1和INT2的中斷標誌位。
位 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
$3A($005A) | INTF1 | INTF0 | INTF2 | —— | —— | —— | —— | —— |
讀/寫 | R/W | R/W | R/W | R | R | R | R | R |
初始化值 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
在系統程式的初始化部分中對外部中斷進行設定時(定義或改變觸發方式),應先將GICR暫存器中該中斷允許位清零,禁止MCU響應該中斷後再設定ISCn位(中斷觸發方式)。 在開放中斷允許前,一般應通過向GIFR暫存器中的中斷標誌位INTFn寫入邏輯“1”,將該中斷的中斷標誌位清零,然後開放中斷。這樣可以防止在改變ISCn的過程中誤觸發中斷。 |
GICR|=0xC0; //允許INT0、INT1中斷 1100 0000 MCUCR=0x0A; //INT0、INT1下降沿觸發 0000 1010 GIFR=0xC0; //清除INT0、INT1中斷標誌位 1100 0000 //全域性中斷允許; |