Atmega16中斷_第1頁
Atmega16中斷_第2頁
Atmega16中斷_第3頁
Atmega16中斷_第4頁
Atmega16中斷_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、知識(shí)回顧與新課引入,C語言的控制流? 單片機(jī)開發(fā)程序的一般結(jié)構(gòu)和程序執(zhí)行順序? C語言中函數(shù)的定義和調(diào)用規(guī)則? 當(dāng)我們?cè)谧瞿呈聲r(shí),電話或門鈴響了,我們會(huì)如何處理和回應(yīng)?,外部中斷及應(yīng)用,中斷原理 ATmage16的外部中斷 外部中斷應(yīng)用,中斷原理,單片機(jī)中斷的概念 中斷的功能 中斷源 中斷的檢測(cè)與中斷的響應(yīng)條件 CPU對(duì)中斷的響應(yīng) ATmega16的中斷系統(tǒng),單片機(jī)中斷的概念,中斷是指正在執(zhí)行正常程序的計(jì)算機(jī),由于出現(xiàn)一些需要立即進(jìn)行處理的情況,CPU暫?,F(xiàn)在正在執(zhí)行的操作,轉(zhuǎn)而執(zhí)行中斷服務(wù)程序,執(zhí)行完畢后,再返回到原來程序繼續(xù)執(zhí)行的過程。,中斷的功能,中斷技術(shù)在單片機(jī)上能實(shí)現(xiàn)很多的功能,它們

2、主要包括: 實(shí)現(xiàn)單片機(jī)與低速外設(shè)的配合 由于許多外設(shè)的速度較慢,無法與單片機(jī)實(shí)現(xiàn)直接的數(shù)據(jù)交換,因此,必須采用中斷功能來協(xié)調(diào)單片機(jī)與外設(shè)的速度,當(dāng)單片機(jī)在執(zhí)行程序的過程中,如要進(jìn)行數(shù)據(jù)的輸入/輸出操作,則單片機(jī)先發(fā)一個(gè)命令給外設(shè),然后單片機(jī)繼續(xù)執(zhí)行程序,當(dāng)外設(shè)為數(shù)據(jù)交換做好準(zhǔn)備以后,它向單片機(jī)發(fā)出中斷請(qǐng)求,這時(shí),單片機(jī)暫時(shí)中止正在執(zhí)行的程序,轉(zhuǎn)而執(zhí)行中斷服務(wù)程序中的數(shù)據(jù)輸入/輸出程序,數(shù)據(jù)交換完成后,單片機(jī)再返回繼續(xù)執(zhí)行原來的程序。由此可見,中斷技術(shù)實(shí)現(xiàn)了單片機(jī)與外設(shè)的速度配合,提高了單片機(jī)的工作效率,也提高了數(shù)據(jù)交換的效率。, 實(shí)時(shí)控制功能 所謂實(shí)時(shí)控制就是單片機(jī)能及時(shí)完成對(duì)受控對(duì)象的測(cè)量、

3、計(jì)算、分析和控制,從而使受控對(duì)象保持良好的工作狀態(tài),并達(dá)到系統(tǒng)的使用要求。單片機(jī)的中斷技術(shù)使控制參量能隨時(shí)向計(jì)算機(jī)發(fā)出中斷請(qǐng)求,以完成對(duì)數(shù)據(jù)的及時(shí)處理,因此它是單片機(jī)實(shí)現(xiàn)實(shí)時(shí)控制功能的一個(gè)必然要求。 實(shí)現(xiàn)故障的及時(shí)發(fā)現(xiàn) 計(jì)算機(jī)在運(yùn)行過程中,常會(huì)突然發(fā)生一些事先無法預(yù)料的故障。如:硬件故障、運(yùn)算錯(cuò)誤及程序故障。有了中斷技術(shù),計(jì)算機(jī)就能對(duì)這些故障及時(shí)發(fā)現(xiàn)并進(jìn)行自行處理。 實(shí)現(xiàn)人機(jī)聯(lián)系 人們想對(duì)運(yùn)行的計(jì)算機(jī)進(jìn)行干預(yù),必須先通過鍵盤發(fā)出中斷請(qǐng)求,在獲得了機(jī)器準(zhǔn)許后,方可進(jìn)行。中斷技術(shù)使得人們可以隨時(shí)進(jìn)行人機(jī)聯(lián)系,而不用先停機(jī)處理,然后再重新開機(jī)。,中斷源, 外部中斷 AT90LS8535單片機(jī)的外部中

4、斷請(qǐng)求由外設(shè)發(fā)出。 外設(shè)可通過在PD2、PD3上施加低電平、下降沿脈沖或上升沿脈沖觸發(fā)該中斷。 定時(shí)/計(jì)時(shí)器中斷 定時(shí)/計(jì)時(shí)器中斷發(fā)生在單片機(jī)內(nèi)部的3個(gè)定時(shí)/計(jì)時(shí)器上,當(dāng)某個(gè)定時(shí)/計(jì)時(shí)器的計(jì)數(shù)值溢出、輸出比較器匹配或輸入捕獲事件發(fā)生,且相應(yīng)的控制寄存器被設(shè)置為中斷允許時(shí),單片機(jī)響應(yīng)中斷。 串行口中斷 串行口中斷是為串行數(shù)據(jù)的發(fā)送或接收設(shè)置的。每當(dāng)串行口發(fā)送或接收完一個(gè)串行數(shù)據(jù)幀時(shí),其相應(yīng)的狀態(tài)位被置位。如果此時(shí)該類型的中斷為允許,則單片機(jī)響應(yīng)該中斷。, 模數(shù)轉(zhuǎn)換完成中斷 AT90LS8535單片機(jī)的模數(shù)轉(zhuǎn)換完成中斷用于標(biāo)識(shí)單片機(jī)內(nèi)部的模數(shù)轉(zhuǎn)換器。當(dāng)模數(shù)轉(zhuǎn)換器的一次模數(shù)轉(zhuǎn)換及數(shù)據(jù)更新完成時(shí),AD

5、IF置“1”,若此時(shí)ADIE(ADC中斷使能位)和全局中斷使能位都為“1”,則該中斷被響應(yīng)。 EEPROM中斷 EEPROM中斷是為AT90LS8535單片機(jī)內(nèi)部的EEPROM寫操作設(shè)置的,當(dāng)EEPROM準(zhǔn)備好,且EERIE(EEPROM準(zhǔn)備好中斷使能)和全局中斷使能都為“1”,則該中斷被響應(yīng)。 模擬比較器中斷 模擬比較器中斷發(fā)生在單片機(jī)的模擬比較器的輸出發(fā)生變化時(shí),這種變化可以是一個(gè)上升沿,可以是一個(gè)下降沿,也可以是一個(gè)電平變化,用戶可以通過其控制寄存器和狀態(tài)寄存器(ACSR)來設(shè)置。,中斷的檢測(cè)與中斷的響應(yīng)條件,設(shè)置中斷請(qǐng)求觸發(fā)器 設(shè)置中斷屏蔽觸發(fā)器 總中斷是開放的 CPU在現(xiàn)行指令結(jié)束后

6、響應(yīng)中斷,設(shè)置中斷請(qǐng)求觸發(fā)器,每一個(gè)中斷源,要能發(fā)出中斷請(qǐng)求信號(hào),且這個(gè)信號(hào)能保持著,直到CPU響應(yīng)這個(gè)中斷后,才可清除中斷請(qǐng)求。,設(shè)置中斷屏蔽觸發(fā)器,實(shí)際應(yīng)用系統(tǒng)中,往往有多個(gè)中斷源,每一個(gè)中斷源的中斷請(qǐng)求是否能發(fā)送至CPU,由各自的中斷屏蔽觸發(fā)器決定。只有當(dāng)此觸發(fā)器為1時(shí),中斷請(qǐng)求才能被送至CPU。,總中斷是開放的,在CPU內(nèi)部有一個(gè)中斷允許觸發(fā)器。只有當(dāng)其為1時(shí)CPU才能響應(yīng)中斷;若其為0,即使有中斷請(qǐng)求,CPU也不響應(yīng)。該觸發(fā)器的狀態(tài)可由指令設(shè)置,稱為總中斷開關(guān)。,CPU在現(xiàn)行指令結(jié)束后響應(yīng)中斷,在開中斷情況下,若外設(shè)有中斷請(qǐng)求,CPU也并不是立即響應(yīng),只有當(dāng)正在執(zhí)行的指令運(yùn)行至最后一

7、個(gè)機(jī)器周期的最后一個(gè)狀態(tài)時(shí),CPU才采樣中斷請(qǐng)求信號(hào)線。若發(fā)現(xiàn)有中斷請(qǐng)求,則把內(nèi)部的中斷鎖存器置1,然后下一個(gè)機(jī)器周期進(jìn)入中斷周期,執(zhí)行中斷服務(wù)程序。,CPU對(duì)中斷的響應(yīng),現(xiàn)場(chǎng)保護(hù) 中斷服務(wù)程序 現(xiàn)場(chǎng)恢復(fù),單片機(jī)檢測(cè)到外設(shè)或內(nèi)部的中斷請(qǐng)求以后,要執(zhí)行一些特定的操作,然后再轉(zhuǎn)去執(zhí)行中斷服務(wù)程序,中斷服務(wù)完成以后,單片機(jī)還必須更改一些寄存器的內(nèi)容才可以返回到原有程序。詳細(xì)的中斷處理過程如下:,現(xiàn)場(chǎng)保護(hù),由于中斷服務(wù)程序的執(zhí)行會(huì)破壞單片機(jī)內(nèi)某些寄存器的內(nèi)容,因此,為了避免中斷服務(wù)程序完成后影響原有程序的執(zhí)行,單片機(jī)必須要將有關(guān)寄存器的內(nèi)容壓入椎棧,也就是必須進(jìn)行現(xiàn)場(chǎng)保護(hù)。,中斷服務(wù)程序,中斷服務(wù)程序

8、是對(duì)中斷進(jìn)行處理的一個(gè)子程序。,現(xiàn)場(chǎng)恢復(fù),中斷服務(wù)程序完成以后,為了使單片機(jī)返回到主程序中繼續(xù)執(zhí)行,單片機(jī)必須將現(xiàn)場(chǎng)保護(hù)時(shí)保存下來的內(nèi)容從堆棧中彈出至相應(yīng)的寄存器,也即現(xiàn)場(chǎng)恢復(fù)。,5.2 ATmega16的外部中斷,5.2.1 外部中斷源 5.2.2 外部中斷源的控制,5.2.1 外部中斷源 ATmega16有3個(gè)外部中斷源,分別對(duì)應(yīng)PD2、PD3 和PB2,如表5-2所示。, 狀態(tài)寄存器(SREG) 通用中斷控制寄存器(GICR) MCU控制寄存器(MCUCR) MCU控制和狀態(tài)寄存器(MCUCSR) 通用中斷標(biāo)志寄存器(GIFR),ATmega16的外部中斷用戶是可編程的。與外部中斷有關(guān)的

9、 控制寄存器為:,狀態(tài)寄存器SREG,位7(I):全局中斷使能 位6位0:與中斷無關(guān),在C語言編程時(shí)由系統(tǒng)管理,通用中斷控制寄存器GICR,MCU控制寄存器 MCUCR,位3位0:外部中斷INT0、INT1的中斷觸發(fā)方式控制位。 MCU控制寄存器中的低4位用于選擇INT0、INT1的 中觸發(fā)方式,MCU控制和狀態(tài)寄存器 MCUCSR,位6:外部中斷INT2的中斷觸發(fā)方式控制位。 當(dāng)ISC2置“0”時(shí),INT2引腳上的一個(gè)下降沿將觸發(fā)中斷; 當(dāng)ISC2置“1”時(shí),INT2引腳上的一個(gè)上升沿將觸發(fā)中斷。,通用中斷標(biāo)志寄存器GIFR,5.3 外部中斷應(yīng)用,CVAVR編譯器的中斷操作: CVAVR 的

10、C編譯器支持在C源程序中直接開發(fā)中斷程序。當(dāng)用戶使用該功能時(shí),必須在中斷服務(wù)子程序定義之前用“interrupt”語句通知編譯器,該子程序是一個(gè)中斷操作。 用“interrupt”語句定義中斷服務(wù)子程序的格式為: interrupt 中斷向量號(hào)或中斷向量號(hào)的宏定義 void handler(中斷函數(shù)名) (void) 其中,中斷函數(shù)名為用戶定義的中斷服務(wù)子程序的名稱, 而中斷向量號(hào)則用于表明中斷的類型。,例如: interrupt 2 void int_0 (void) interrupt EXT_INT0 void int_0 (void) ,例1:開放INT0、INT1,并將INT0設(shè)置為

11、上升沿觸發(fā)中斷、 INT1設(shè)置為上降沿觸發(fā)中斷。,#include void main(void) DDRD.2=0; DDRD.3=0; GICR=0 xc0; MCUCR=0b00001011; GIFR=0 xc0; SREG=0 x80; while(1) ; ,例2:編程實(shí)現(xiàn):上電時(shí)LED不顯示,INT0發(fā)生后,LED顯示“0”; INT1發(fā)生后,LED顯示“1”,編程思路:開放INT0、INT1,并設(shè)置為邊沿觸發(fā)方式,在程序設(shè)計(jì)中,可以采用:,中斷法 查詢法,#include /中斷服務(wù)程序 interruptEXT_INT0void int0(void) PORTB=0 x3f;

12、 interruptEXT_INT1void int1(void) PORTB=0 x06; ,用中斷法實(shí)現(xiàn)題目要求,INT0發(fā)生后,今LED顯示“0”,INT1發(fā)生后,今LED顯示“1”,void main(void) DDRD.2=0; PORTD.2=1; DDRD.3=0; PORTD.3=1; DDRB=0 xff; DDRD.0=1; GICR=0 xc0; MCUCR=0b00001010; GIFR=0 xc0; SREG=0 x80; while(1) ; ,用中斷法實(shí)現(xiàn)題目要求,void main(void) DDRD.2=0; PORTD.2=1; DDRD.3=0; P

13、ORTD.3=1; DDRB=0 xff; DDRD.0=1; MCUCR=0b00001010; GIFR=0 xc0; while(1) if(GIFR ,用查詢法實(shí)現(xiàn)題目要求,查詢INT1的標(biāo)志位,如置位則令LED顯示“1”,并清標(biāo)志位,查詢INT0的標(biāo)志位,如置位則令LED顯示“0”,并清標(biāo)志位,中斷法和查詢法的特點(diǎn)及差別:,中斷法特點(diǎn): 需要開放中斷的“總開關(guān)”和“分開關(guān)”; 中斷響應(yīng)速度快; 需要定義中斷服務(wù)程序才能進(jìn)行相關(guān)處理。 不需要軟件清中斷標(biāo)志位 查詢法特點(diǎn): 不需要開放中斷的“總開關(guān)”和“分開關(guān)”; 標(biāo)志位檢測(cè)不及時(shí),因而響應(yīng)速度慢; 不需要定義中斷服務(wù)程序也能進(jìn)行相關(guān)處

14、理。 需要軟件清中斷標(biāo)志位(寫“1”清零),應(yīng)用課題:設(shè)計(jì)一段程序,用于統(tǒng)計(jì)INT0的中斷次數(shù),void main(void) DDRD.2=0; DDRC=0 xff; GICR=0 x40; MCUCR=0b00000010; GIFR=0 x40; SREG=0 x80; while(1) PORTC.2=! PORTC.2; delay_ms(500); ,主程序,INT0的中斷服務(wù)程序:,interruptEXT_INT0 void int0(void) x+; 顯示函數(shù)(); ,課程小結(jié):,ATmega16的外部中斷用戶是可編程的。與外部中斷有關(guān)的控制寄存器為: 狀態(tài)寄存器(SREG) 通用中斷控制寄存器(GICR) MCU控制寄存器(MCUCR) MCU控

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論