<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > AVR單片機入門(mén)教程之三---中斷

AVR單片機入門(mén)教程之三---中斷

作者: 時(shí)間:2016-11-23 來(lái)源:網(wǎng)絡(luò ) 收藏
首先說(shuō)一下中斷的優(yōu)點(diǎn):中斷函數只在中斷觸發(fā)源觸發(fā)的時(shí)候才會(huì )執行,其他時(shí)間不執行. 如果不使用中斷而且如果要根據某個(gè)端口的變化而作相應的函數操作,就必須不斷地查詢(xún)端口的信號,而中斷不用,只要端口一有變化,就會(huì )系統就會(huì )自動(dòng)進(jìn)入中斷函數, 我覺(jué)得這就是中斷的目的,也是優(yōu)點(diǎn).

然后說(shuō)一下中斷的使用,要使用AVR的外部中斷,要先進(jìn)行中斷初始設置(觸發(fā)電平上升沿和下降沿的設定),然后開(kāi)全局中斷,這樣在觸發(fā)中斷管腳的時(shí)候就會(huì )進(jìn)入中斷處理函數.無(wú)論導致引腳電平變化的原因是來(lái)自單片機內部還是外部,只要引腳上的電平發(fā)生了變化都可以觸發(fā)該引腳上的電平變化中斷.

本文引用地址:http://dyxdggzs.com/article/201611/320343.htm

AVR單片機,其硬件系統不支持自動(dòng)實(shí)現中斷嵌套的處理。如果在系統設計中,必須使用中斷嵌套處理,則需要由用戶(hù)編寫(xiě)相應的程序,通過(guò)軟件設置來(lái)實(shí)現中斷嵌套的功能。

如果在初始化中開(kāi)了總中斷 那么AVR在進(jìn)去中斷處理函數后會(huì )自動(dòng)把總中斷給關(guān)了中斷出來(lái)后就會(huì )重新開(kāi)中斷 所以如果不用在中斷里面嵌套另一個(gè)中斷 就不用在中斷服務(wù)程序里面開(kāi)總中斷使能。。。

AVR單片機的中斷優(yōu)先級只在同時(shí)觸發(fā)中斷時(shí)優(yōu)先級高的中斷先進(jìn)行處理,而對于51單片機中低級別的中斷不能打斷高級別的中斷,在A(yíng)VR單片機中低級別的中斷卻可以打斷高級別的中斷,這是很不一樣的,下面用一個(gè)例子來(lái)說(shuō)明一下:

//T0溢出中斷服務(wù)程序
#pragma interrupt_handler timer0_ovf_isr:10
void timer0_ovf_isr(void)
{
TCNT0 = 0xB4;
SEI();
dlygd(0,0);
dlygd(0,0);
}

//T2溢出中斷服務(wù)程序
#pragma interrupt_handler timer2_ovf_isr:5
void timer2_ovf_isr(void)
{
TCNT2 = 0xA0;
SEI();
saomiao();
}

對于以上兩個(gè)時(shí)間溢出中斷函數我在中斷程序里面都用了SEI();由于開(kāi)了總中斷,那么在中斷執行過(guò)程中,只要有其他中斷觸發(fā),系統同樣會(huì )進(jìn)入另外的中斷處理函數.

用JTAG調試了一下 發(fā)現只要TCNT0一溢出 就觸發(fā)TIMER0的中斷 在中斷的過(guò)程中只要TCNT2一溢出 就觸發(fā)了TIMER2的中斷 這樣子級別高的中斷打斷低的中斷是沒(méi)什么問(wèn)題啊 但是在TCNT0再次溢出時(shí) 還是會(huì )觸發(fā)TIMER0的中斷 這就很奇怪了 難道中斷級別低的中斷可以中斷級別高的中斷嗎??? 這就對了 在A(yíng)VR單片機中,低級別的中斷是可以打斷高級別的中斷的,只要總中斷開(kāi)著(zhù).



評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>