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