




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、第四講外部中斷的學(xué)習(xí)提要:主要學(xué)習(xí)ATmega8的PD口的PD2、PD3兩端口的第二功能外部中斷。前面我們學(xué)習(xí)了ATmega8的I/O口作為通用數(shù)字輸入/輸出口來用時對LED 數(shù)碼管控制和掃描按鍵的應(yīng)用。但ATmega8多數(shù)的I/O口都是復(fù)用口,除了作為通用數(shù)字I/O使用,還有其第二功能,下面我們就先來學(xué)習(xí)PD2、PD3兩端口的第二功能:4.1 外部中斷的特點:PD2端口是外部中斷源0,PD3端口是外部源1。ATmega8的外部中斷就是由這兩個引腳觸發(fā)的。要注意的是:如果設(shè)置允許外部中斷產(chǎn)生,即使是INT0和INT1引腳設(shè)置為輸出方式,外部中斷還是會觸發(fā)的。外部中斷的觸發(fā)方式有三種可選擇:上升
2、沿觸發(fā)、下降沿觸發(fā)和低電平觸發(fā)。具體方式是由MCU控制寄存器MCUCR以及MCU控制和狀態(tài)寄存器MCUCSR決定的。當(dāng)允許外部中斷且設(shè)置為電平觸發(fā)方式時,只有中斷輸入引腳保持低電平,就將一直觸發(fā)產(chǎn)生中斷。而對于上升沿或下降沿的中斷觸發(fā),則需要I/O時鐘信號的存在。要使用外部中斷我們首先要了解幾個寄存器:1 AVR的狀態(tài)寄存器SREG2 MCU控制寄存器MCUCR3 通用中斷控制寄存器GICR4 通用中斷標(biāo)志寄存器GIFR1 AVR的狀態(tài)寄存器SREG的每位都是一個標(biāo)志位,這里先介紹位7I(全局中斷允許位,該位為1時全局中斷始能允許,單獨的中斷使能則有對應(yīng)的中斷寄存器控制。如果該位為0則不論單獨
3、允許位是否置1,所有中斷都被禁止,系統(tǒng)將不相應(yīng)任何中斷。因而要使用外部中斷首先要對該位置1。2 控制寄存器MCUCR的位0、1(ISC00、ISC01是外部中斷0的中斷方式控制位0和位1。其設(shè)置可參見下表:ISC01 ISC00 INT0的中斷方式0 0 INT0的低電平產(chǎn)生一個中斷請求0 1 INT0的下降沿和上升沿都產(chǎn)生一個中斷請求1 0 INT0的下降沿產(chǎn)生一個中斷請求1 1 INT0的上升沿都產(chǎn)生一個中斷請求MCUCR的位2、3(ISC10、ISC11是外部中斷1的中斷方式控制位0和位1。其設(shè)置與中斷0的控制方式類似。3 通用中斷控制寄存器GICR的位6INT0和位7INT1分別控制外
4、部中斷0和中斷1的使能。當(dāng)上面提到的狀態(tài)寄存器SREG的I位(全局中斷允許位置1時,INT0置1則外部引腳中斷0使能;INT1置1則外部引腳中斷1使能。4通用中斷標(biāo)志寄存器GIFR的為6INTF0和位7INTF1是外部中斷0和外部中斷1的標(biāo)志位。當(dāng)INT0引腳上的有效事件觸發(fā)一個中斷請求后,INTF0位會變成1。如果全局中斷使能且外部中斷0使能,則MCU將跳至相應(yīng)的中斷向量處開始執(zhí)行中斷服務(wù)程序,同時硬件自動將INTF0標(biāo)志位清零。當(dāng)外部中斷0被設(shè)置為低電平觸發(fā)方式時,標(biāo)志INTF0位將始終為0。上面提到中斷向量表,這里簡單介紹一下:Atmega8共有18個中斷源,Flash 程序存儲器空間的
5、最低位置(0x0000x012定義為復(fù)位和中斷向量空間,也就是說把中斷函數(shù)的地址保存在這里,當(dāng)中斷發(fā)生后就到這里找到對應(yīng)函數(shù)的地址,然后去執(zhí)行對應(yīng)的函數(shù)。這里先把中斷向量表給出來,我們熟悉一下:中斷向量號向量地址中斷源中斷定義1 0x0000 REST 上電、外部、BOD、看門狗復(fù)位2 0x001 INT0 外部中斷請求03 0x002 INT1 外部中斷請求14 0x003 TIMER2_COMP 時鐘/計數(shù)器2比較匹配5 0x004 TIMER2_OVF 時鐘/計數(shù)器2溢出6 0x005 TIMER1_CAPT 時鐘/計數(shù)器2捕獲事件時鐘/計數(shù)器1比較匹配A7 0x006 TIMER1CO
6、MPA8 0x007 TIMER1時鐘/計數(shù)器1比較匹配BCOMPB9 0x008 TIMER1_OVF 時鐘/計數(shù)器1溢出10 0x009 TIMER0_OVF 時鐘/計數(shù)器0溢出11 0x00A SPI, STC SPI串行傳輸完成12 0x00B USART, RCX USART,Rx完成USART,寄存器空13 0x00C USART,UDRE14 0x00D USART, TXC USART,Tx完成15 0x00E ADC ADC轉(zhuǎn)換完成16 0x00F EE_RDY EEPROM準(zhǔn)備好17 0x010 ANA_COMP 模擬比較18 0x011 TWI 兩線串行接口(IIC19
7、0x012 SPM_RDY 寫程序存儲器準(zhǔn)備好在此中斷向量表中,處于低地址的中斷向量對應(yīng)的中斷優(yōu)先級高,所以系統(tǒng)復(fù)位REST擁有最高優(yōu)先級;外部中斷0的優(yōu)先級高于外部中斷1。其中系統(tǒng)復(fù)位REST不是中斷。用ICCAVR的編程,在C中只要用#pragma偽指令和中斷向量說明中斷服務(wù)程序的入口地址即可:#pragma interrupt_handler <函數(shù)名>:<中斷向量>例如要定義使用INT0中斷服務(wù)程序:#pragma interrupt_handler int0_fun:2void int0_fun(void這里的中斷向量就對應(yīng)到該函數(shù)是會被那個中斷調(diào)用,例如上面
8、的2修改為3的話就變成INT1的中斷服務(wù)程序了,因此也可以讓多個中斷調(diào)用同一個函數(shù)。例如:#pragma interrupt_handler int_fun:2#pragma interrupt_handler int_fun:3就是外部中斷0和中斷1都調(diào)用int_fun函數(shù)。4.2 應(yīng)用實例-中斷計數(shù)器好了,前面的理論知識就先介紹這么多,接下來我們就做個小例子。我們用兩個按鍵作為兩個外部中斷的觸發(fā)源,為了復(fù)習(xí)前面的知識,我們再接一個LED 數(shù)碼管用來顯示數(shù)據(jù),我先畫出電路圖: 根據(jù)上面的圖,外部中斷0設(shè)置為下降沿觸發(fā),中斷1設(shè)置為低電平觸發(fā),調(diào)用同一個中斷函數(shù),在中斷函數(shù)中做數(shù)值加1,然后在
9、LED數(shù)碼管中顯示。我們可以比較兩種中斷方式的不同,好想一想我們的程序應(yīng)該這么寫呢? 怎么樣,你的程序也跑起來了嗎,現(xiàn)在對外部中斷已經(jīng)基本了解了吧。其實如果在中斷的端口接上振蕩源,我們就可以在中斷函數(shù)里面計數(shù)做定時器,這樣的定時器要比我們現(xiàn)在用的delay_ms函數(shù)準(zhǔn)確多了,當(dāng)然ATmega8本身就帶有三個定時/計數(shù)器我們后面會陸續(xù)學(xué)到。接下來我們就可以利用中斷復(fù)習(xí)一下前面掃描鍵盤的內(nèi)容。4.3 中斷觸發(fā)鍵盤掃描這個內(nèi)容要簡單些,我們就是要使按下鍵盤中的任一個按鍵就觸發(fā)一個中斷,然后在中斷函數(shù)中來調(diào)用鍵盤處理函數(shù)。好了,我先畫出電路圖: 其中比前一章的3X3Key的實例多了一個74S10的與非
10、門,作用是任一個按鍵按下都可以觸發(fā)一個INT0中斷。我們要實現(xiàn)的內(nèi)容是:任一個按鍵按下觸發(fā)一個INT0中斷,INT0設(shè)置為下降沿觸發(fā)方式,在中斷中做一個標(biāo)志,表示有按鍵按下,然后在主函數(shù)中判斷該標(biāo)志位,有按鍵按下,消除抖動干擾,再做確認(rèn)哪個按鍵按下,最后在LED數(shù)碼管上顯示按鍵的值。好了先想一想該怎么做,我給出一個參考: 資料整理自互聯(lián)網(wǎng),版權(quán)歸原作者! 歡迎訪問 www.XinShiL 新勢力單片機、嵌入式 Protues-ATmega8仿真 老楊工作室 young45 資料整理自互聯(lián)網(wǎng),版權(quán)歸原作者! 歡迎訪問 www.XinShiL 新勢力單片機、嵌入式 Protues-ATmega8仿真 老楊工作室 young45 資料整理自互聯(lián)網(wǎng),版權(quán)歸原作者! 歡迎訪問 www.XinShiL 新勢力單片機、嵌入式 Protues-ATmega8仿真 這里的 ScanKey 函數(shù)比前面的例子有一點改動,是為了畫圖的方便;在中 斷函數(shù)里只是做一個標(biāo)志,而不是去確定哪個按鍵按下,在 LED 數(shù)碼管中顯示 按鍵值是因為,中斷函數(shù)要做到占用時間越短越好, 而消除抖動干擾的時候
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 驀然回首的中考語文作文
- 印刷設(shè)備環(huán)境適應(yīng)性測試與評估考核試卷
- 海洋工程節(jié)能減排策略考核試卷
- 生活中的樂趣初三語文作文
- 煉焦廠的環(huán)境監(jiān)測與預(yù)警系統(tǒng)考核試卷
- 影視錄放設(shè)備的智能圖像識別技術(shù)改進考核試卷
- 清潔服務(wù)團隊建設(shè)與溝通考核試卷
- 電氣設(shè)備智能電網(wǎng)協(xié)同控制技術(shù)考核試卷
- 生態(tài)系統(tǒng)健康評估與維護考核試卷
- 種子種苗產(chǎn)業(yè)發(fā)展的政策環(huán)境分析考核試卷
- 靜電噴涂培訓(xùn)
- 各專業(yè)文件準(zhǔn)備目錄-急診內(nèi)科藥物臨床試驗機構(gòu)GCP SOP
- 心肺復(fù)蘇術(shù)課件2024新版
- 湖北開放大學(xué)2024年《漢語基礎(chǔ)#》形考作業(yè)1-4試題
- 中國銀聯(lián)招聘筆試題庫2024
- 2024安徽制造業(yè)發(fā)展報告
- 四年級下冊道德與法治(教學(xué)設(shè)計+素材)第8課《這些東西哪里來》(第二課時)
- 高職旅游專業(yè)《旅行社經(jīng)營管理》說課稿
- DB65-T 4785-2024 耕地質(zhì)量等級調(diào)查評價技術(shù)規(guī)范
- 財務(wù)機器人開發(fā)與應(yīng)用實戰(zhàn) 課件 任務(wù)5 E-mail人機交互自動化-2
- 2024年個人廉潔自律述職報告(三篇)
評論
0/150
提交評論