AVR單片機入門教程之三---中斷
然后說一下中斷的使用,要使用AVR的外部中斷,要先進行中斷初始設置(觸發電平上升沿和下降沿的設定),然后開全局中斷,這樣在觸發中斷管腳的時候就會進入中斷處理函數.無論導致引腳電平變化的原因是來自單片機內部還是外部,只要引腳上的電平發生了變化都可以觸發該引腳上的電平變化中斷.
本文引用地址:http://www.104case.com/article/201611/320343.htmAVR單片機,其硬件系統不支持自動實現中斷嵌套的處理。如果在系統設計中,必須使用中斷嵌套處理,則需要由用戶編寫相應的程序,通過軟件設置來實現中斷嵌套的功能。
如果在初始化中開了總中斷 那么AVR在進去中斷處理函數后會自動把總中斷給關了中斷出來后就會重新開中斷 所以如果不用在中斷里面嵌套另一個中斷 就不用在中斷服務程序里面開總中斷使能。。。
AVR單片機的中斷優先級只在同時觸發中斷時優先級高的中斷先進行處理,而對于51單片機中低級別的中斷不能打斷高級別的中斷,在AVR單片機中低級別的中斷卻可以打斷高級別的中斷,這是很不一樣的,下面用一個例子來說明一下:
//T0溢出中斷服務程序
#pragma interrupt_handler timer0_ovf_isr:10
void timer0_ovf_isr(void)
{
}
//T2溢出中斷服務程序
#pragma interrupt_handler timer2_ovf_isr:5
void timer2_ovf_isr(void)
{
}
對于以上兩個時間溢出中斷函數我在中斷程序里面都用了SEI();由于開了總中斷,那么在中斷執行過程中,只要有其他中斷觸發,系統同樣會進入另外的中斷處理函數.
用JTAG調試了一下
評論