版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、AVR單片機(jī)外部中斷0、1、2 詳解中斷基本包含:1.中斷源2.中斷向量(中斷入口地址)3.中斷優(yōu)先級(jí)4.中斷函數(shù)除此之外,在單片機(jī)中,中斷的執(zhí)行或者中斷的觸發(fā)必須符合以下的規(guī)則:中斷觸發(fā)|執(zhí)行= 全局中斷使能位AND 中斷源使能位AND 中斷源標(biāo)志位單片機(jī)內(nèi)部中斷的觸發(fā)必須完成,全局中斷使能,中斷源使能,中斷源標(biāo)志位置一等條件。除此之外,如果是外部中斷0,1,2(INT0,1,2),必須設(shè)置引腳觸發(fā)的規(guī)則。最后呢,就是需要在程序里建立處理中斷的中斷函數(shù)。在編程的時(shí)候的步驟大致如下:(無(wú)視INT2)1. 初始化PD2,PD3 為輸入狀態(tài)。DDRD|=BIT(2)|BIT(3);2. 設(shè)置INT
2、0,1 引腳觸發(fā)的規(guī)則,實(shí)驗(yàn)中為低電平觸發(fā)。MCUCR=0xF0;3. 設(shè)置INT0,1 中斷源使能位為邏輯1。GICR|BIT(7)|BIT(6);4. 清除INT0,1 的中斷標(biāo)志位(軟件寫(xiě)入,邏輯1 為清除)。GIFR|=BIT(7);BIT(6);5. 全局中斷允許位使能。SREG|=BIT(7);6. 編輯中斷處理函數(shù)。/*ATmega16提供3個(gè)外部中斷,分別由INT0、INT1和INT2引腳觸發(fā)。需要注意的是,如果將ATmega16設(shè)置為允許外部中斷,則即使把INT0、INT1和INT2引腳設(shè)置為輸出方式,外部中斷仍然會(huì)被觸發(fā)。外部中斷可選擇采用上升沿觸發(fā)、下降沿觸發(fā)和低電平觸發(fā)
3、(INT2中斷只能采用沿觸發(fā)方式。*/#include;#include;#include "smg.h"/*1.狀態(tài)寄存器SREGbit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 I T H S V N Z C I:全局中斷使能位。 在I置位后,單獨(dú)的中斷使能由不同的中斷寄存器控制。若I為0,則禁止中斷。 MCU 控制寄存器 MCUCR MCU 控制寄存器包含中斷觸發(fā)控制位與通用 MCU 功能Bit 7 6 5 4 3 2 1 0 SM2 SE SM1 SM0 ISC11 ISC10 ISC01 ISC00 外部中斷 1 由引腳 INT1 激
4、發(fā),如果 SREG 寄存器的 I 標(biāo)志位和相應(yīng)的中斷屏蔽位置位的話(huà)。在檢測(cè)邊沿前 MCU 首先采樣 INT1 引腳上的電平。如果選擇了邊沿觸發(fā)方式或電平變化觸發(fā)方式,那么持續(xù)時(shí)間大于一個(gè)時(shí)鐘周期的脈沖將觸發(fā)中斷,過(guò)短的脈沖則不能保證觸發(fā)中斷。如果選擇低電平觸發(fā)方式,那么低電平必須保持到當(dāng)前指令執(zhí)行完成。SE:MCU休眠使能位SM1SM0:MCU休眠模式選擇 SM2 SM1 SM0 休眠模式 0 0 0 空閑 0 0 1 ADC 噪聲抑制模式 0 1 0 掉電模式 0 1 1 省電模式 1 0 0 保留 1 0 1 保留 1 1 0 Standby(1) 模式 1 1 1 擴(kuò)展Standby(1
5、) 模式 ISC11 ISC10 說(shuō)明 0 0 INT1 為低電平時(shí)產(chǎn)生中斷請(qǐng)求 0 1 INT1 引腳上任意的邏輯電平變化都將引發(fā)中斷 1 0 INT1 的下降沿產(chǎn)生異步中斷請(qǐng)求 1 1 INT1 的上升沿產(chǎn)生異步中斷請(qǐng)求 外部中斷 0 由引腳 INT0 激發(fā),如果 SREG 寄存器的 I 標(biāo)志位和相應(yīng)的中斷屏蔽位置位的話(huà)。在檢測(cè)邊沿前 MCU 首先采樣 INT0 引腳上的電平。如果 選擇了邊沿觸發(fā)方式或電平變化觸發(fā)方式,那么持續(xù)時(shí)間大于一個(gè)時(shí)鐘周期的脈沖將觸發(fā)中斷,過(guò)短的脈沖則不能保證觸發(fā)中斷。如果選擇低電平觸發(fā)方式,那么低電平必須保持到當(dāng)前指令執(zhí)行完成 ISC01 ISC00 說(shuō)明 0
6、0 INT0 為低電平時(shí)產(chǎn)生中斷請(qǐng)求 0 1 INT0 引腳上任意的邏輯電平變化都將引發(fā)中斷 1 0 INT0 的下降沿產(chǎn)生異步中斷請(qǐng)求 1 1 INT0 的上升沿產(chǎn)生異步中斷請(qǐng)求*/ /*MCU 控制與狀態(tài)寄存器MCUCSR- Bit 7 6 5 4 3 2 1 0 JTD ISC2 – JTRF WDRF BORF EXTRF PORF * Bit 6 – ISC2: 中斷 2 觸發(fā)方式控制 異步外中斷 2 由外部引腳 INT2 激活,如果 SREG 寄存器的 I 標(biāo)志和 GICR 寄存器相應(yīng)的 中斷屏蔽位置位的話(huà)。若 ISC2 寫(xiě) 0 , INT2 的下降沿激活中
7、斷。若 ISC2 寫(xiě) 1 , INT2 的上 升沿激活中斷。 INT2 的邊沿觸發(fā)方式是異步的。只要 INT2 引腳上產(chǎn)生寬度大于50ns (1s=1000ms,1 ms=1000μs,1μs=1000ns ) 所示數(shù)據(jù)的脈沖就會(huì)引發(fā)中斷。若選擇了低電平中斷,低電平必須保持到當(dāng)前指令完成, 然后才會(huì)產(chǎn)生中斷。而且只要將引腳拉低,就會(huì)引發(fā)中斷請(qǐng)求。改變 ISC2 時(shí)有可能發(fā)生 中斷。因此建議首先在寄存器 GICR 里清除相應(yīng)的中斷使能位 INT2 ,然后再改變ISC2。 最后,不要忘記在重新使能中斷之前通過(guò)對(duì) GIFR 寄存器的相應(yīng)中斷標(biāo)志位 INTF2 寫(xiě) 1’ 使其清
8、零。*/ /*通用中斷控制寄存器 GICR Bit 7 6 5 4 3 2 1 0 INT1 INT0 INT2 – – – IVSEL IVCE * Bit 7 – INT1: 使能外部中斷請(qǐng)求 1 當(dāng) INT1 為 1’ ,而且狀態(tài)寄存器SREG 的 I 標(biāo)志置位,相應(yīng)的外部引腳中斷就使能了。 MCU通用控制寄存器– MCUCR的中斷敏感電平控制1位 1/0 (ISC11與ISC10)決定中斷是 由上升沿、下降沿,還是 INT1 電平觸發(fā)的。只要使能,即使 INT1 引腳被配置為輸出, 只要引腳電平發(fā)生了相應(yīng)的變化,中
9、斷可將產(chǎn)生。 * Bit 6 – INT0: 使能外部中斷請(qǐng)求 0 當(dāng) INT0 為 1’ ,而且狀態(tài)寄存器SREG 的 I 標(biāo)志置位,相應(yīng)的外部引腳中斷就使能了。 MCU通用控制寄存器– MCUCR的中斷敏感電平控制0位 1/0 (ISC01與ISC00)決定中斷是 由上升沿、下降沿,還是 INT0 電平觸發(fā)的。只要使能,即使 INT0 引腳被配置為輸出, 只要引腳電平發(fā)生了相應(yīng)的變化,中斷可將產(chǎn)生。 * Bit 5 – INT2: 使能外部中斷請(qǐng)求 2 當(dāng) INT2 為 1’ ,而且狀態(tài)寄存器SREG 的 I 標(biāo)志置位,相應(yīng)的外部
10、引腳中斷就使能了。 MCU通用控制寄存器– MCUCR 的中斷敏感電平控制2位 1/0 (ISC2與ISC2)決定中斷是由 上升沿、下降沿,還是 INT2 電平觸發(fā)的。只要使能,即使 INT2 引腳被配置為輸出,只 要引腳電平發(fā)生了相應(yīng)的變化,中斷可將產(chǎn)生*/ /*通用中斷標(biāo)志寄存器 GIFR Bit 7 6 5 4 3 2 1 0 INTF1 INTF0 INTF2 – – – – – * Bit 7 – INTF1: 外部中斷標(biāo)志 1 INT1引腳電平發(fā)生跳變時(shí)觸發(fā)中斷請(qǐng)求,并置位相應(yīng)的中斷標(biāo)志INTF1。
11、如果SREG 的位 I以及GICR寄存器相應(yīng)的中斷使能位INT1為”1” ,MCU即跳轉(zhuǎn)到相應(yīng)的中斷向量。進(jìn)入中 斷服務(wù)程序之后該標(biāo)志自動(dòng)清零。此外,標(biāo)志位也可以通過(guò)寫(xiě)入 ”0” 來(lái)清零。 * Bit 6 – INTF0: 外部中斷標(biāo)志 0 INT0引腳電平發(fā)生跳變時(shí)觸發(fā)中斷請(qǐng)求,并置位相應(yīng)的中斷標(biāo)志INTF0。如果SREG 的位 I以及GICR寄存器相應(yīng)的中斷使能位INT0為”1” ,MCU即跳轉(zhuǎn)到相應(yīng)的中斷向量。進(jìn)入中 斷服務(wù)程序之后該標(biāo)志自動(dòng)清零。此外,標(biāo)志位也可以通過(guò)寫(xiě)入 ”0”
12、 來(lái)清零。 * Bit 5 – INTF2: 外部中斷標(biāo)志 2 INT2引腳電平發(fā)生跳變時(shí)觸發(fā)中斷請(qǐng)求,并置位相應(yīng)的中斷標(biāo)志INTF2。如果SREG 的位 I以及GICR寄存器相應(yīng)的中斷使能位INT2為”1” ,MCU即跳轉(zhuǎn)到相應(yīng)的中斷向量。進(jìn)入中 斷服務(wù)程序之后該標(biāo)志自動(dòng)清零。此外,標(biāo)志位也可以通過(guò)寫(xiě)入 ”0” 來(lái)清零。注意,當(dāng) INT2中斷禁用進(jìn)入某些休眠模式時(shí),該引腳的輸入緩沖將禁用。這會(huì)導(dǎo)致INTF2標(biāo)志設(shè)置 信號(hào)的邏輯變化*/ /外部中斷0向量端口#pragma interrupt_handler INTER_0:iv_IN
13、T0/外部中斷1向量端口#pragma interrupt_handler INTER_1:iv_INT1/外部中斷2向量端口#pragma interrupt_handler INTER_2:iv_INT2void INTER_init_0(unsigned char a)/a取值0-3switch(a) case 0:MCUCR&=(1ISC01);MCUCR&=(1ISC00);break;/INT0 為低電平時(shí)產(chǎn)生中斷請(qǐng)求 case 1:MCUCR&=(1ISC01);MCUCR|=1ISC00;break;/ INT0 引腳上任意的邏輯電平變化都將引發(fā)中斷 case 2:MCUCR|
14、=1ISC01;MCUCR&=(1ISC00);break;/INT0 的下降沿產(chǎn)生異步中斷請(qǐng)求 case 3:MCUCR|=1ISC01;MCUCR|=1ISC00;break;/INT0 的上升沿產(chǎn)生異步中斷請(qǐng)求 default : MCUCR|=1ISC01;MCUCR&=(1ISC00);break;/設(shè)置錯(cuò)誤時(shí),下降沿產(chǎn)生異步中斷請(qǐng)求 void INTER_init_1(unsigned char a)/a取值0-3switch(a) case 0:MCUCR&=(1ISC11);MCUCR&=(1ISC10);break;/INT1 為低電平時(shí)產(chǎn)生中斷請(qǐng)求 case 1:MCUCR
15、&=(1ISC11);MCUCR|=1ISC10;break;/ INT1 引腳上任意的邏輯電平變化都將引發(fā)中斷 case 2:MCUCR|=1ISC11;MCUCR&=(1ISC10);break;/INT1 的下降沿產(chǎn)生異步中斷請(qǐng)求 case 3:MCUCR|=(1ISC11)|(1ISC10);break;/INT1 的上升沿產(chǎn)生異步中斷請(qǐng)求 default : MCUCR|=1ISC11;MCUCR&=(1ISC10);break;/設(shè)置錯(cuò)誤時(shí),下降沿產(chǎn)生異步中斷請(qǐng)求 void INTER_init_2(unsigned char a)if(a) MCUCSR|=(1ISC2);/上升
16、沿觸發(fā); else MCUCSR&=(1ISC2);/下降沿觸發(fā); void INTER_0(void)show(2,1);/add your code here!void INTER_1(void)show(1,0);/add your code here!void INTER_2(void)/ show(3,2);/add your code here!void InterruptInit(void)PORTD |= (1 PD2)|(1 PD3); /INT0、INT1端口輸出高電平DDRD &= (1 PD2)&(1 PD3); /方向:輸入PORTB = (1 PB3); /INT2
17、端口輸出高電平DDRB &= (1 PB3); /方向:輸入GICR |= (1 INT0)|(1 INT1)|(1INT2);/使能INT0,INT1GIFR&=(1INTF0)&(1INTF1)&(1INTF2);/清零中斷標(biāo)志SREG|=0x80;/使能全局中斷/#include "smg.h"#pragma data:code/共陽(yáng)數(shù)碼管斷碼表const table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80, 0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xb6,0xff; /*1ms基準(zhǔn)延時(shí)
18、程序*void delay(uint ms) uint i,j; for(i=0;ims;i+) for(j=0;j1141;j+); /*系統(tǒng)初始化*void SmgInit(void) DDRA|=BIT(PA2);/設(shè)置PA2為輸出 DDRB=0XFF;/設(shè)置PB口為輸出 PORTA|=BIT(PA2);/PA2=1,使能控制LED的74HC573 PORTB|=0XFF;/PB口輸出1111 1111,使得所有的LED熄滅 PORTA&=BIT(PA2);/PA2=0,禁止控制LED的573,使控制LED的數(shù)據(jù)鎖存 DDRA|=BIT(PA3);/設(shè)置PA3(smgd_lk)為輸出 DDRA|=BIT(PA4);/設(shè)置PA4(SMGB_LK)為輸出 DDRA|=BIT(PA6);/設(shè)置蜂鳴器控制口為輸出PORTA&=BIT(PA6);/關(guān)閉蜂鳴器/*數(shù)碼管動(dòng)態(tài)掃描程序*void show(uchar data,uchar bit) PORTA|=BIT(3);/PA3=1,使能控制數(shù)碼管數(shù)據(jù)的74HC573 PORTB=tabledata;/送數(shù)碼管斷碼數(shù)據(jù)PORTA&=BIT(3);/關(guān)閉控制數(shù)碼管數(shù)據(jù)的573,使得數(shù)碼管數(shù)據(jù)鎖存PORTB=0
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高中語(yǔ)文第6課語(yǔ)言的藝術(shù)第1節(jié)語(yǔ)不驚人死不休-選詞和煉句課件新人教版選修語(yǔ)言文字應(yīng)用
- 概預(yù)算第六章公路工程定額
- 增城市英語(yǔ)短文語(yǔ)法填空閱讀理解高考一輪訓(xùn)練及答案
- Windows Server網(wǎng)絡(luò)管理項(xiàng)目教程(Windows Server 2022)(微課版)10.4 拓展案例1 NAT服務(wù)器
- 江蘇省徐州市邳州市2023-2024學(xué)年九年級(jí)上學(xué)期期中抽測(cè)物理試卷(含答案解析)
- 小學(xué)五年級(jí)上冊(cè)安全教育教案 全冊(cè)
- 2024八年級(jí)英語(yǔ)上冊(cè)Unit8HowdoyoumakeabananamilkshakePeriod2SectionAGrammarFocus-3c習(xí)題課件新版人教新目標(biāo)版
- 大學(xué)水土保持學(xué)006第三章土壤侵蝕原理土壤侵蝕規(guī)律
- 語(yǔ)法高中英語(yǔ)句子成分詳細(xì)解析教你如何分解英語(yǔ)句子
- 高中物理第二章恒定電流課時(shí)13串聯(lián)電路和并聯(lián)電路課件新人教版選修3-
- 《病原生物與免疫學(xué)》課程標(biāo)準(zhǔn)
- 投資項(xiàng)目法律意見(jiàn)書(shū)模板-法律意見(jiàn)書(shū)模板
- 2021《外國(guó)文學(xué)史》題庫(kù)及答案
- DB63-T 2109-2023 湟水流域水生植物繁育技術(shù)規(guī)程
- 中藥煎藥質(zhì)量評(píng)估檢查表
- 組態(tài)軟件技術(shù)課程設(shè)計(jì)報(bào)告書(shū)
- 北京市城鄉(xiāng)居民養(yǎng)老保險(xiǎn)發(fā)展評(píng)估研究報(bào)告
- 節(jié)能標(biāo)識(shí)使用管理規(guī)定
- 戴姆勒產(chǎn)品開(kāi)發(fā)質(zhì)量體系
- 通過(guò)全球化與世界空間學(xué)習(xí)的收獲
- GB 17675-2021汽車(chē)轉(zhuǎn)向系基本要求
評(píng)論
0/150
提交評(píng)論