avr使用范例--avr外部中斷范例

avr使用范例--avr外部中斷范例

ID:5876382

大?。?7.00 KB

頁數(shù):8頁

時間:2017-12-27

avr使用范例--avr外部中斷范例_第1頁
avr使用范例--avr外部中斷范例_第2頁
avr使用范例--avr外部中斷范例_第3頁
avr使用范例--avr外部中斷范例_第4頁
avr使用范例--avr外部中斷范例_第5頁
資源描述:

《avr使用范例--avr外部中斷范例》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在教育資源-天天文庫。

1、AVR使用范例--AVR外部中斷范例本頁關鍵詞:單片機外部中斷外部中斷的應用AVR外部中斷INTERUPTS關于AVR中斷:系統(tǒng)在正常運行主程序時,如果突然有一個重要的任務要馬上處理,那么系統(tǒng)就要保存現(xiàn)在的工作,然后再去處理這個任務,執(zhí)行這個重要任務完畢以后再返回原來的主程序繼續(xù)運行,這就是中斷。主程序一旦進入中斷服務程序,那么AVR芯片將自動的關閉全局中斷,在這個期間不再執(zhí)行其它的中斷請求,直到中斷程序結束以后芯片才自動的重新開放全局中斷。(注意,在這個期間某些中斷請求可能會被丟棄,某些請求會留下中斷請求標致,一旦當前的中斷執(zhí)行完畢,這個有中斷標致的請求就有可能馬上得到響

2、應,如INT0的下降沿觸發(fā)就會留下中斷請求標致,而低電平觸發(fā)就不會流下中斷請求標致)。如果你想在執(zhí)行中斷服務程序時響應另外一個更重要的中斷,那么就要在中斷服務程序中加入一條打開全局中斷的語句。使用ICC快速建立中斷服務程序//ICC-AVRapplicationbuilder:2006-12-817:04:44//Target:M16//Crystal:7.3728Mhz#include#includeunsignedinti=0;voidport_init(void){PORTA=0x00;DDRA=0x01;PORTB=0x00;

3、DDRB=0x00;PORTC=0x00;//m103outputonlyDDRC=0x00;PORTD=0x0C;//使INT0,INT1對應口上拉電阻有效DDRD=0x00;//必須設置INT0,INT1對應口為輸入}#pragmainterrupt_handlerint0_isr:2voidint0_isr(void){//externalinteruptonINT0i++;}#pragmainterrupt_handlerint1_isr:3voidint1_isr(void){//externalinteruptonINT1PORTA=0x01;}//callth

4、isroutinetoinitializeallperipheralsvoidinit_devices(void){//stoperrantinterruptsuntilsetupCLI();//disableallinterruptsport_init();MCUCR=0x08;//INT1的下降沿產(chǎn)生異步中斷請求,INT0上升延GICR=0xC0;//INT0和INT1使能TIMSK=0x00;//timerinterruptsourcesSEI();//re-enableinterrupts//allperipheralsarenowinitialized}voidm

5、ain(void){init_devices();while(1)//死循環(huán)等待中斷;}使用ICCAVRApplicationBuilder進行如下圖所示的設置。可以設置是否使用中斷,上升延,下降延,低電平,任意的邏輯電平變化。將生成的程序進行修改,DDRA=0x01;PORTD=0x0C;,添加MAIN函數(shù),如下·//ICC-AVRapplicationbuilder:2006-12-817:04:44·//Target:M16·//Crystal:7.3728Mhz··#include·#include··unsignedinti

6、=0;··voidport_init(void)·{·PORTA=0x00;·DDRA=0x01;·PORTB=0x00;·DDRB=0x00;·PORTC=0x00;//m103outputonly·DDRC=0x00;·PORTD=0x0C;//使INT0,INT1對應口上拉電阻有效·DDRD=0x00;//必須設置INT0,INT1對應口為輸入·}··#pragmainterrupt_handlerint0_isr:2·voidint0_isr(void)·{·//externalinteruptonINT0·i++;//在中斷里進行操作·}··#pragmainte

7、rrupt_handlerint1_isr:3·voidint1_isr(void)·{·//externalinteruptonINT1·PORTA=0x01;//在中斷里進行操作·}··//callthisroutinetoinitializeallperipherals·voidinit_devices(void)·{·//stoperrantinterruptsuntilsetup·CLI();//disableallinterrupts·port_init();··MCUCR=0x08;//INT1的下降

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。