




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、廣西大學(xué)電氣工程學(xué)院廣西大學(xué)電氣工程學(xué)院第第9 9章章 編譯器和集成開發(fā)環(huán)境編譯器和集成開發(fā)環(huán)境第第070070章章 ATm16中斷系統(tǒng)中斷系統(tǒng) 本章介紹本章介紹ATmega16ATmega16單片機(jī)中斷系統(tǒng)的單片機(jī)中斷系統(tǒng)的結(jié)構(gòu)、工作原理以及簡單編程應(yīng)用。結(jié)構(gòu)、工作原理以及簡單編程應(yīng)用。 1 1、中斷系統(tǒng)的基本概念;、中斷系統(tǒng)的基本概念; 2 2、中斷系統(tǒng)的組成和用法;、中斷系統(tǒng)的組成和用法; 3 3、中斷系統(tǒng)應(yīng)用編程;、中斷系統(tǒng)應(yīng)用編程; 建議閱讀建議閱讀138138頁課文!頁課文! 廣西大學(xué)電氣工程學(xué)院廣西大學(xué)電氣工程學(xué)院第第9 9章章 編譯器和集成開發(fā)環(huán)境編譯器和集成開發(fā)環(huán)境中斷系統(tǒng)的
2、基本概念中斷系統(tǒng)的基本概念1 1、中斷概念:、中斷概念: 1)中斷中斷:CPU中止執(zhí)行原程序;中止執(zhí)行原程序; 中斷源:中斷源:申請(qǐng)申請(qǐng)CPU服務(wù)的內(nèi)外電路模塊;服務(wù)的內(nèi)外電路模塊; 2)中斷觸發(fā)方式中斷觸發(fā)方式:外中斷源申請(qǐng)中斷的電平方式;:外中斷源申請(qǐng)中斷的電平方式; 中斷申請(qǐng)標(biāo)志中斷申請(qǐng)標(biāo)志:中斷源申請(qǐng)中斷的狀態(tài)表示位;:中斷源申請(qǐng)中斷的狀態(tài)表示位; 中斷允許標(biāo)志中斷允許標(biāo)志:CPU允許中斷源申請(qǐng)的狀態(tài)允許中斷源申請(qǐng)的狀態(tài)表示位;表示位; 3 3)中斷優(yōu)先順序中斷優(yōu)先順序: CPU處理中斷源申請(qǐng)的先后順序;處理中斷源申請(qǐng)的先后順序; 中斷優(yōu)先級(jí)別中斷優(yōu)先級(jí)別: CPU處理中斷源申請(qǐng)的先后
3、級(jí)別;處理中斷源申請(qǐng)的先后級(jí)別; 中斷嵌套中斷嵌套: CPU處理低級(jí)中斷服務(wù)中允許高級(jí)中斷插入優(yōu)先處理;處理低級(jí)中斷服務(wù)中允許高級(jí)中斷插入優(yōu)先處理; 4 4)中斷入口地址中斷入口地址:中斷源進(jìn)入中斷處理的入口區(qū)首地址。:中斷源進(jìn)入中斷處理的入口區(qū)首地址。 中斷服務(wù)程序地址中斷服務(wù)程序地址:中斷源進(jìn)入中斷服務(wù)的服務(wù)區(qū)首地址。:中斷源進(jìn)入中斷服務(wù)的服務(wù)區(qū)首地址。廣西大學(xué)電氣工程學(xué)院廣西大學(xué)電氣工程學(xué)院第第9 9章章 編譯器和集成開發(fā)環(huán)境編譯器和集成開發(fā)環(huán)境中斷系統(tǒng)的基本概念中斷系統(tǒng)的基本概念2 2、中斷處理過程:、中斷處理過程: 1)中斷申請(qǐng):中斷申請(qǐng):中斷源向中斷源向CPU發(fā)出中斷申請(qǐng)電平激勵(lì)。
4、發(fā)出中斷申請(qǐng)電平激勵(lì)。 2)中斷響應(yīng):中斷響應(yīng):CPU檢測中斷申請(qǐng)標(biāo)志位,保存斷點(diǎn),轉(zhuǎn)入中斷入口地址。檢測中斷申請(qǐng)標(biāo)志位,保存斷點(diǎn),轉(zhuǎn)入中斷入口地址。 3)中斷服務(wù):中斷服務(wù):CPU進(jìn)入中斷服務(wù)程序段,保護(hù)現(xiàn)場,執(zhí)行服務(wù)處理,恢進(jìn)入中斷服務(wù)程序段,保護(hù)現(xiàn)場,執(zhí)行服務(wù)處理,恢復(fù)現(xiàn)場的過程。復(fù)現(xiàn)場的過程。 A、保護(hù)現(xiàn)場:保護(hù)現(xiàn)場:保護(hù)原程序中共享單元的有用數(shù)據(jù)。保護(hù)原程序中共享單元的有用數(shù)據(jù)。 B、中斷服務(wù)處理:中斷服務(wù)處理:執(zhí)行真正為中斷源申請(qǐng)服務(wù)的程序處理。執(zhí)行真正為中斷源申請(qǐng)服務(wù)的程序處理。 C、恢復(fù)現(xiàn)場:恢復(fù)現(xiàn)場:恢復(fù)原程序中共享單元的有用數(shù)據(jù)。恢復(fù)原程序中共享單元的有用數(shù)據(jù)。 4)中斷返
5、回:中斷返回:CPU 執(zhí)行中斷返回指令,恢復(fù)斷點(diǎn),返回原來程序。執(zhí)行中斷返回指令,恢復(fù)斷點(diǎn),返回原來程序。廣西大學(xué)電氣工程學(xué)院廣西大學(xué)電氣工程學(xué)院第第9 9章章 編譯器和集成開發(fā)環(huán)境編譯器和集成開發(fā)環(huán)境 mega16的中斷向量表的中斷向量表(1)(1) 向量向量序號(hào)序號(hào)中斷向量入口中斷向量入口 flash地址地址中斷源代碼中斷源代碼中斷名稱說明中斷名稱說明 1 $0000RESET5 5方式的復(fù)位中斷方式的復(fù)位中斷 2 $0002EXT_INT0外部中斷外部中斷0 0請(qǐng)求中斷請(qǐng)求中斷 3 $0004EXT-INT1外部中斷外部中斷1 1請(qǐng)求中斷請(qǐng)求中斷 4 $0006TIMER2 COMP定時(shí)
6、定時(shí)/ /計(jì)數(shù)計(jì)數(shù)2 2 比較匹配中斷比較匹配中斷 5 $0008TIMER2 OVF定時(shí)定時(shí)/ /計(jì)數(shù)計(jì)數(shù)2 2 溢出中斷溢出中斷 6 $000ATIMER1 CAPT定時(shí)定時(shí)/ /計(jì)數(shù)計(jì)數(shù)1 1 事件捕捉中斷事件捕捉中斷 7 $000CTIMER1 COMPA定時(shí)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器1 1 比較匹配中斷比較匹配中斷A A廣西大學(xué)電氣工程學(xué)院廣西大學(xué)電氣工程學(xué)院第第9 9章章 編譯器和集成開發(fā)環(huán)境編譯器和集成開發(fā)環(huán)境mega16的中斷向量表的中斷向量表(2)(2)向量向量序號(hào)序號(hào) 中斷向量中斷向量 flash地址地址中斷源代碼中斷源代碼中斷源名稱中斷源名稱 8 $000ETIMER1 CO
7、MPB定時(shí)定時(shí)/ /計(jì)數(shù)計(jì)數(shù)1 1 比較匹配中斷比較匹配中斷B B 9 $0010TIM1_OVF定時(shí)定時(shí)/ /計(jì)數(shù)計(jì)數(shù)1 1 溢出中斷溢出中斷 10 $0012TIM0_OVF定時(shí)定時(shí)/ /計(jì)數(shù)計(jì)數(shù)0 0 溢出中斷溢出中斷 11 $0014SPI STCSPI SPI 串行傳輸結(jié)束中斷串行傳輸結(jié)束中斷 12 $0016USART RXCUSART USART 接收結(jié)束中斷接收結(jié)束中斷 13 $0018USART UDREUSART USART 數(shù)據(jù)寄存器空中斷數(shù)據(jù)寄存器空中斷 14 $001AUSART TXCUSART USART 發(fā)送結(jié)束中斷發(fā)送結(jié)束中斷廣西大學(xué)電氣工程學(xué)院廣西大學(xué)電氣工
8、程學(xué)院第第9 9章章 編譯器和集成開發(fā)環(huán)境編譯器和集成開發(fā)環(huán)境mega16的中斷向量表的中斷向量表(3)(3)向量向量序號(hào)序號(hào) 中斷向量中斷向量 flash 地址地址中斷源代碼中斷源代碼中斷源名稱中斷源名稱 15 $001CADC A/D A/D 轉(zhuǎn)換結(jié)束轉(zhuǎn)換結(jié)束中斷中斷 16 $001EEE-RDYEEPROM EEPROM 就緒就緒中斷中斷 17 $0020ANA-COMP模擬比較模擬比較中斷中斷 18 $0022TWI兩線串行接口兩線串行接口中斷中斷 19 $0024INT2外部中斷外部中斷2 2 請(qǐng)求請(qǐng)求中斷中斷 20 $0026TIMER0 COMP定時(shí)定時(shí)/ /計(jì)數(shù)計(jì)數(shù)0 0 比較
9、比較匹配中斷匹配中斷 21 $0028SPM-RDY保存程序存儲(chǔ)器內(nèi)容就緒保存程序存儲(chǔ)器內(nèi)容就緒斷斷廣西大學(xué)電氣工程學(xué)院廣西大學(xué)電氣工程學(xué)院第第9 9章章 編譯器和集成開發(fā)環(huán)境編譯器和集成開發(fā)環(huán)境 與中斷系統(tǒng)有關(guān)的寄存器與中斷系統(tǒng)有關(guān)的寄存器相關(guān)寄存器:相關(guān)寄存器:1、SREG-狀態(tài)寄存器:狀態(tài)寄存器: Bit7 - I: 全局中斷使能位全局中斷使能位;當(dāng)一個(gè)中斷發(fā)生后,當(dāng)一個(gè)中斷發(fā)生后,“I”被請(qǐng)零,屏被請(qǐng)零,屏蔽后續(xù)中斷。當(dāng)現(xiàn)中斷返回后,蔽后續(xù)中斷。當(dāng)現(xiàn)中斷返回后,“I” 將被重新置位。將被重新置位。2、GICR-通用中斷控制寄存器:通用中斷控制寄存器:3、GIFR-通用中斷標(biāo)志寄存器:通
10、用中斷標(biāo)志寄存器:4、MCUCR-微控制器控制寄存器:微控制器控制寄存器:5、MCUSCR -微控制器狀態(tài)與控制寄存器:微控制器狀態(tài)與控制寄存器:廣西大學(xué)電氣工程學(xué)院廣西大學(xué)電氣工程學(xué)院第第9 9章章 編譯器和集成開發(fā)環(huán)境編譯器和集成開發(fā)環(huán)境 GICR-通用中斷控制寄存器通用中斷控制寄存器 Bit7-INT1: Bit7-INT1: 外部中斷外部中斷 1 1 使能控制位使能控制位 Bit6-INT0: Bit6-INT0: 外部中斷外部中斷 0 0 使能控制位使能控制位 bit1 -bit1 -中斷向量區(qū)選擇位中斷向量區(qū)選擇位 bit0 -bit0 -中斷向量區(qū)選擇使能位中斷向量區(qū)選擇使能位
11、廣西大學(xué)電氣工程學(xué)院廣西大學(xué)電氣工程學(xué)院第第9 9章章 編譯器和集成開發(fā)環(huán)境編譯器和集成開發(fā)環(huán)境 GIFR-通用中斷標(biāo)志寄存器通用中斷標(biāo)志寄存器 Bit7 Bit7INTF1:INTF1:外部中斷外部中斷1 1申請(qǐng)標(biāo)志位;申請(qǐng)標(biāo)志位; Bit6Bit6INTF0:INTF0:外部中斷外部中斷0 0中斷申請(qǐng)標(biāo)志位;中斷申請(qǐng)標(biāo)志位;廣西大學(xué)電氣工程學(xué)院廣西大學(xué)電氣工程學(xué)院第第9 9章章 編譯器和集成開發(fā)環(huán)境編譯器和集成開發(fā)環(huán)境 MCUCR-微控系統(tǒng)寄存器微控系統(tǒng)寄存器 Bit 1, 0 - ISC01,ISC00: 外部中斷外部中斷0觸發(fā)方式控制位觸發(fā)方式控制位 Bit 3, 2 - ISC11,
12、ISC10: 外部中斷外部中斷1觸發(fā)方式控制位觸發(fā)方式控制位 bit 6 - SE 休眠使能位休眠使能位 bit 4,5,7 -休眠模式選擇位休眠模式選擇位廣西大學(xué)電氣工程學(xué)院廣西大學(xué)電氣工程學(xué)院第第9 9章章 編譯器和集成開發(fā)環(huán)境編譯器和集成開發(fā)環(huán)境 外中斷外中斷0 0 觸發(fā)方式控制觸發(fā)方式控制 例例 設(shè)置外部中斷設(shè)置外部中斷INT0INT0,下降沿觸發(fā)有效。,下降沿觸發(fā)有效。 MCUCR = 0 x02; /MCUCR = 0 x02; /設(shè)置設(shè)置MCUCRMCUCR寄存器位寄存器位0 0、1 1廣西大學(xué)電氣工程學(xué)院廣西大學(xué)電氣工程學(xué)院第第9 9章章 編譯器和集成開發(fā)環(huán)境編譯器和集成開發(fā)環(huán)
13、境 外中斷外中斷1 1 觸發(fā)方式控制觸發(fā)方式控制例:例:設(shè)置外中斷設(shè)置外中斷INT1為上升沿觸發(fā)中斷請(qǐng)求。為上升沿觸發(fā)中斷請(qǐng)求。 MCUCR = 0 x0c; /設(shè)置設(shè)置MCUCR位位2、3 廣西大學(xué)電氣工程學(xué)院廣西大學(xué)電氣工程學(xué)院第第9 9章章 編譯器和集成開發(fā)環(huán)境編譯器和集成開發(fā)環(huán)境 MCUSCR- 微控系統(tǒng)狀態(tài)與控制寄存器微控系統(tǒng)狀態(tài)與控制寄存器JTDISC2 -JTRFWDRFBORFEXTRFPORF ISC2 INT2中斷觸發(fā)控制方式中斷觸發(fā)控制方式 0INT2的下降沿產(chǎn)生一個(gè)異步中斷請(qǐng)求的下降沿產(chǎn)生一個(gè)異步中斷請(qǐng)求 1INT2的上升沿產(chǎn)生一個(gè)異步中斷請(qǐng)求的上升沿產(chǎn)生一個(gè)異步中斷請(qǐng)
14、求位位0:- PORF上電復(fù)位標(biāo)志位上電復(fù)位標(biāo)志位位位1:- EXTRF外部復(fù)位標(biāo)志位外部復(fù)位標(biāo)志位位位2:- BORF掉電復(fù)位標(biāo)志位掉電復(fù)位標(biāo)志位位位3:- WDRF看門狗復(fù)位標(biāo)志位看門狗復(fù)位標(biāo)志位位位4:- JTRF為為JTAG復(fù)位標(biāo)志位復(fù)位標(biāo)志位位位7:-廣西大學(xué)電氣工程學(xué)院廣西大學(xué)電氣工程學(xué)院第第9 9章章 編譯器和集成開發(fā)環(huán)境編譯器和集成開發(fā)環(huán)境中斷控制位的應(yīng)用中斷控制位的應(yīng)用 1、如果、如果SREG寄存器的全局中斷標(biāo)志位寄存器的全局中斷標(biāo)志位“I”和和GICR的相應(yīng)中的相應(yīng)中斷屏蔽位置位。外部中斷將由引腳激發(fā)。在檢測邊沿前斷屏蔽位置位。外部中斷將由引腳激發(fā)。在檢測邊沿前MCU首先首
15、先采樣引腳上的電平。采樣引腳上的電平。 2 2、若選擇邊沿觸發(fā)方式或電平變化觸發(fā)方式,持續(xù)時(shí)間應(yīng)、若選擇邊沿觸發(fā)方式或電平變化觸發(fā)方式,持續(xù)時(shí)間應(yīng)大于一個(gè)時(shí)鐘周期的脈沖將觸發(fā)中斷,過短的脈沖不能保證觸大于一個(gè)時(shí)鐘周期的脈沖將觸發(fā)中斷,過短的脈沖不能保證觸發(fā)中斷。發(fā)中斷。 3 3、若選擇低電平觸發(fā)方式,低電平必須保持到當(dāng)前指令執(zhí)、若選擇低電平觸發(fā)方式,低電平必須保持到當(dāng)前指令執(zhí)行完成行完成 廣西大學(xué)電氣工程學(xué)院廣西大學(xué)電氣工程學(xué)院第第9 9章章 編譯器和集成開發(fā)環(huán)境編譯器和集成開發(fā)環(huán)境中斷響應(yīng)中斷響應(yīng)1 1、中斷響應(yīng)的條件:、中斷響應(yīng)的條件: 除了非屏蔽中斷(如復(fù)位中斷)外,其它中斷都可以用軟除
16、了非屏蔽中斷(如復(fù)位中斷)外,其它中斷都可以用軟件設(shè)置屏蔽或開放。系統(tǒng)只有具備如下的中斷條件,件設(shè)置屏蔽或開放。系統(tǒng)只有具備如下的中斷條件,CPUCPU才可能才可能對(duì)中斷請(qǐng)求進(jìn)行響應(yīng)。對(duì)中斷請(qǐng)求進(jìn)行響應(yīng)。 1) 1) 中斷源請(qǐng)求觸發(fā):中斷源請(qǐng)求觸發(fā): 每一個(gè)中斷源能發(fā)出中斷請(qǐng)求信號(hào),而且能保持,直至每一個(gè)中斷源能發(fā)出中斷請(qǐng)求信號(hào),而且能保持,直至CPUCPU響應(yīng)這個(gè)中斷后,才可清除中斷請(qǐng)求。響應(yīng)這個(gè)中斷后,才可清除中斷請(qǐng)求。 2) 2) 設(shè)置中斷允許斷屏蔽使能位:設(shè)置中斷允許斷屏蔽使能位: 在實(shí)際系統(tǒng)中,往往有多個(gè)中斷源。為了增加控制的靈活在實(shí)際系統(tǒng)中,往往有多個(gè)中斷源。為了增加控制的靈活性,
17、在每個(gè)接口電路中增加了一個(gè)中允許斷屏蔽使能位,只有性,在每個(gè)接口電路中增加了一個(gè)中允許斷屏蔽使能位,只有當(dāng)此使能位為當(dāng)此使能位為“1”1”時(shí),外設(shè)的中斷請(qǐng)求才能被送出至?xí)r,外設(shè)的中斷請(qǐng)求才能被送出至CPUCPU。廣西大學(xué)電氣工程學(xué)院廣西大學(xué)電氣工程學(xué)院第第9 9章章 編譯器和集成開發(fā)環(huán)境編譯器和集成開發(fā)環(huán)境 3) 3) 全局中斷允許使能位全局中斷允許使能位 在在CPUCPU內(nèi)部有一個(gè)狀態(tài)寄存器。只有內(nèi)部有一個(gè)狀態(tài)寄存器。只有當(dāng)其全局中斷使當(dāng)其全局中斷使能位為能位為“1”1”時(shí)時(shí),CPUCPU才可能響應(yīng)中斷;若其為才可能響應(yīng)中斷;若其為“0”0”,即,即使使INTRINTR線上有中斷請(qǐng)求,線上有
18、中斷請(qǐng)求,CPUCPU也不響應(yīng)。而這個(gè)狀態(tài)位可也不響應(yīng)。而這個(gè)狀態(tài)位可由軟件指令來改變。當(dāng)由軟件指令來改變。當(dāng)CPUCPU復(fù)位時(shí),中斷允許觸發(fā)器為復(fù)位時(shí),中斷允許觸發(fā)器為“0”0”,所以必須要用軟件指令來開中斷。所以必須要用軟件指令來開中斷。當(dāng)中斷響應(yīng)后,當(dāng)中斷響應(yīng)后,全局中斷使能位就自動(dòng)請(qǐng)零全局中斷使能位就自動(dòng)請(qǐng)零“0”0”關(guān)中斷。當(dāng)中斷返回后,關(guān)中斷。當(dāng)中斷返回后,全局中斷使能位就自動(dòng)置位為全局中斷使能位就自動(dòng)置位為“1”1”開中斷。開中斷。 如在中斷服務(wù)程序中設(shè)置中斷嵌套,也必須要用軟件如在中斷服務(wù)程序中設(shè)置中斷嵌套,也必須要用軟件指令來開中斷。指令來開中斷。CPUCPU在現(xiàn)行指令結(jié)束后
19、在現(xiàn)行指令結(jié)束后, ,全局中斷位自動(dòng)全局中斷位自動(dòng)置置1 1,即自動(dòng)開中斷。,即自動(dòng)開中斷。廣西大學(xué)電氣工程學(xué)院廣西大學(xué)電氣工程學(xué)院第第9 9章章 編譯器和集成開發(fā)環(huán)境編譯器和集成開發(fā)環(huán)境 中斷處理過程中斷處理過程 中斷處理過程分為:中斷處理過程分為: 1)1)中斷響應(yīng)中斷響應(yīng) ; 2)2)中斷處理;中斷處理; 3)3)中斷返回;中斷返回; 一、中斷響應(yīng):一、中斷響應(yīng): (1)(1)關(guān)全局中斷:關(guān)全局中斷:CPUCPU響應(yīng)中斷后,發(fā)出中斷響應(yīng)響應(yīng)中斷后,發(fā)出中斷響應(yīng)信號(hào)的同時(shí),硬件自動(dòng)地關(guān)閉全局中斷標(biāo)志為信號(hào)的同時(shí),硬件自動(dòng)地關(guān)閉全局中斷標(biāo)志為I I。 (2)(2)保存斷點(diǎn):保存斷點(diǎn):CPUC
20、PU響應(yīng)中斷后,把主程序中斷的響應(yīng)中斷后,把主程序中斷的地址(斷點(diǎn))保存到堆棧,以備中斷處理完畢后,能返回主地址(斷點(diǎn))保存到堆棧,以備中斷處理完畢后,能返回主程序并正確執(zhí)行。程序并正確執(zhí)行。廣西大學(xué)電氣工程學(xué)院廣西大學(xué)電氣工程學(xué)院第第9 9章章 編譯器和集成開發(fā)環(huán)境編譯器和集成開發(fā)環(huán)境中斷處理:中斷處理: 二、中斷處理:二、中斷處理: (1)(1)按照中斷入口設(shè)定的中斷子程序入口地址,轉(zhuǎn)入相應(yīng)的中斷服務(wù)按照中斷入口設(shè)定的中斷子程序入口地址,轉(zhuǎn)入相應(yīng)的中斷服務(wù)子程序。子程序。 (2)(2)保護(hù)現(xiàn)場:保護(hù)現(xiàn)場:為使中斷處理不影響中斷返回后主程序運(yùn)作,需把中為使中斷處理不影響中斷返回后主程序運(yùn)作,
21、需把中斷服務(wù)用到的與主程序共享的有關(guān)寄存器、存儲(chǔ)單元、標(biāo)志位等的狀態(tài)斷服務(wù)用到的與主程序共享的有關(guān)寄存器、存儲(chǔ)單元、標(biāo)志位等的狀態(tài)壓入堆棧保護(hù)起來。這樣,當(dāng)退出中斷處理后,壓入堆棧保護(hù)起來。這樣,當(dāng)退出中斷處理后,CPUCPU就能夠恢復(fù)中斷前的就能夠恢復(fù)中斷前的狀態(tài),保證進(jìn)入中斷前的程序正確運(yùn)行狀態(tài),保證進(jìn)入中斷前的程序正確運(yùn)行 。 (3 3)中斷服務(wù):)中斷服務(wù):根據(jù)中斷服務(wù)要求,編寫中斷服務(wù)功能程序模塊根據(jù)中斷服務(wù)要求,編寫中斷服務(wù)功能程序模塊。 (4)4)恢復(fù)現(xiàn)場:恢復(fù)現(xiàn)場:把堆棧保存的相關(guān)狀態(tài),按先進(jìn)后出的原則從堆棧彈把堆棧保存的相關(guān)狀態(tài),按先進(jìn)后出的原則從堆棧彈出,送回中斷前原來的位
22、置。出,送回中斷前原來的位置。 (5 5)在)在C C編譯器中保護(hù)現(xiàn)場,恢復(fù)現(xiàn)場以及中斷返回,都由系統(tǒng)自動(dòng)編譯器中保護(hù)現(xiàn)場,恢復(fù)現(xiàn)場以及中斷返回,都由系統(tǒng)自動(dòng)完成。完成。廣西大學(xué)電氣工程學(xué)院廣西大學(xué)電氣工程學(xué)院第第9 9章章 編譯器和集成開發(fā)環(huán)境編譯器和集成開發(fā)環(huán)境中斷返回:中斷返回:三、中斷返回:三、中斷返回: 在中斷子程序的最后,安排一條中斷返回指令在中斷子程序的最后,安排一條中斷返回指令(RETIRETI),將堆棧內(nèi)保存的進(jìn)入中斷時(shí)被中斷的程序位置),將堆棧內(nèi)保存的進(jìn)入中斷時(shí)被中斷的程序位置值彈出。并自動(dòng)開啟全局中斷標(biāo)志位值彈出。并自動(dòng)開啟全局中斷標(biāo)志位I I,以便,以便CPUCPU能響
23、應(yīng)新能響應(yīng)新的中斷請(qǐng)求。的中斷請(qǐng)求。 在在C C編譯器中,中斷返回與恢復(fù)現(xiàn)場和保護(hù)現(xiàn)場一樣,編譯器中,中斷返回與恢復(fù)現(xiàn)場和保護(hù)現(xiàn)場一樣,不需要用戶編寫完成。不需要用戶編寫完成。廣西大學(xué)電氣工程學(xué)院廣西大學(xué)電氣工程學(xué)院第第9 9章章 編譯器和集成開發(fā)環(huán)境編譯器和集成開發(fā)環(huán)境 中斷入口位置設(shè)置中斷入口位置設(shè)置 通過對(duì)通過對(duì)BOOTRSTBOOTRST熔絲位熔絲位編程和編程和GICRGICR寄存器的寄存器的IVSELIVSEL的設(shè)置,可將系統(tǒng)復(fù)位向量和中斷向量表置于的設(shè)置,可將系統(tǒng)復(fù)位向量和中斷向量表置于FLASHFLASH程序存儲(chǔ)器的程序存儲(chǔ)器的應(yīng)用程序區(qū)的頭部;應(yīng)用程序區(qū)的頭部;或?qū)⑵滢D(zhuǎn)移或?qū)⑵?/p>
24、轉(zhuǎn)移到到引導(dǎo)程序區(qū)的頭部引導(dǎo)程序區(qū)的頭部,即分別置于不同的兩個(gè)區(qū)各,即分別置于不同的兩個(gè)區(qū)各自的頭部。自的頭部。廣西大學(xué)電氣工程學(xué)院廣西大學(xué)電氣工程學(xué)院第第9 9章章 編譯器和集成開發(fā)環(huán)境編譯器和集成開發(fā)環(huán)境中斷嵌套設(shè)置中斷嵌套設(shè)置 當(dāng)當(dāng)MCUMCU響應(yīng)一個(gè)中斷請(qǐng)求時(shí),會(huì)自動(dòng)將全局中斷允響應(yīng)一個(gè)中斷請(qǐng)求時(shí),會(huì)自動(dòng)將全局中斷允許位許位I I自動(dòng)清零,此時(shí)后續(xù)中斷的響應(yīng)即被屏蔽,而當(dāng)自動(dòng)清零,此時(shí)后續(xù)中斷的響應(yīng)即被屏蔽,而當(dāng)MCUMCU執(zhí)行中斷返回指令執(zhí)行中斷返回指令RETIRETI后,又會(huì)將全局中斷允許位后,又會(huì)將全局中斷允許位I I自動(dòng)置自動(dòng)置“1”1”,以允許響應(yīng)下一個(gè)中斷;,以允許響應(yīng)下一
25、個(gè)中斷; 用戶也可在中斷處理程序中將全局中斷允許位用戶也可在中斷處理程序中將全局中斷允許位I I置置“1” 1” ,打開中斷響應(yīng),這樣,打開中斷響應(yīng),這樣MCUMCU就可以再次響應(yīng)中斷,就可以再次響應(yīng)中斷,實(shí)現(xiàn)中斷嵌套處理。實(shí)現(xiàn)中斷嵌套處理。廣西大學(xué)電氣工程學(xué)院廣西大學(xué)電氣工程學(xué)院第第9 9章章 編譯器和集成開發(fā)環(huán)境編譯器和集成開發(fā)環(huán)境中斷的兩種類型中斷的兩種類型- 時(shí)間觸發(fā)型和條件觸發(fā)型時(shí)間觸發(fā)型和條件觸發(fā)型 1 1、對(duì)于時(shí)間觸發(fā)型中斷對(duì)于時(shí)間觸發(fā)型中斷(如時(shí)鐘、計(jì)數(shù)、比較等),一旦(如時(shí)鐘、計(jì)數(shù)、比較等),一旦事件發(fā)生后會(huì)將相應(yīng)的中斷標(biāo)志位置位申請(qǐng)中斷處理,當(dāng)事件發(fā)生后會(huì)將相應(yīng)的中斷標(biāo)志位
26、置位申請(qǐng)中斷處理,當(dāng)MCUMCU響響應(yīng)中斷跳轉(zhuǎn)到中斷向量,開啟相應(yīng)的中斷處理程序時(shí),硬件將應(yīng)中斷跳轉(zhuǎn)到中斷向量,開啟相應(yīng)的中斷處理程序時(shí),硬件將自動(dòng)清除對(duì)應(yīng)的中斷標(biāo)志。這些中斷標(biāo)志位也可通過軟件寫自動(dòng)清除對(duì)應(yīng)的中斷標(biāo)志。這些中斷標(biāo)志位也可通過軟件寫“1”1”來清除。當(dāng)一個(gè)符合條件的中斷觸發(fā)置位了中斷標(biāo)志位,但相來清除。當(dāng)一個(gè)符合條件的中斷觸發(fā)置位了中斷標(biāo)志位,但相應(yīng)的中斷允許位為應(yīng)的中斷允許位為“0”0”,此時(shí),這個(gè)中斷標(biāo)志將掛起為,此時(shí),這個(gè)中斷標(biāo)志將掛起為“1”1”,一直保持到該中斷被響應(yīng)或中斷標(biāo)志被軟件清為一直保持到該中斷被響應(yīng)或中斷標(biāo)志被軟件清為“0”0”。 2 2、對(duì)于一些條件觸發(fā)型
27、中斷對(duì)于一些條件觸發(fā)型中斷(如低電平觸發(fā)的外部中斷)(如低電平觸發(fā)的外部中斷)來講,它們不置位有中斷標(biāo)志位,在中斷條件成立時(shí),將一直來講,它們不置位有中斷標(biāo)志位,在中斷條件成立時(shí),將一直不斷的向不斷的向MCUMCU申請(qǐng)中斷,如果在中斷允許響應(yīng)前,中斷條件由成申請(qǐng)中斷,如果在中斷允許響應(yīng)前,中斷條件由成立狀態(tài)變成不成立狀態(tài),該中斷即宣告終止了立狀態(tài)變成不成立狀態(tài),該中斷即宣告終止了。廣西大學(xué)電氣工程學(xué)院廣西大學(xué)電氣工程學(xué)院第第9 9章章 編譯器和集成開發(fā)環(huán)境編譯器和集成開發(fā)環(huán)境低電平中斷的應(yīng)用低電平中斷的應(yīng)用 3、低電平中斷的應(yīng)用、低電平中斷的應(yīng)用 當(dāng)外部中斷使能并且配置為電平觸發(fā)當(dāng)外部中斷使能
28、并且配置為電平觸發(fā)(INT0/INT1)(INT0/INT1),只要引腳電平為低,中斷就會(huì)產(chǎn)生。若要求只要引腳電平為低,中斷就會(huì)產(chǎn)生。若要求INT0,INT1INT0,INT1在信號(hào)下降沿或上升沿觸發(fā),在信號(hào)下降沿或上升沿觸發(fā),I/O I/O 時(shí)鐘就必須工作。而時(shí)鐘就必須工作。而INT0/INT1INT0/INT1的低電平中斷檢測是異步的,這些中斷可以的低電平中斷檢測是異步的,這些中斷可以用來將器件從睡眠模式喚醒。在睡眠過程用來將器件從睡眠模式喚醒。在睡眠過程( ( 除了空閑模除了空閑模式式) ) 中中I/OI/O時(shí)鐘是停止的。時(shí)鐘是停止的。廣西大學(xué)電氣工程學(xué)院廣西大學(xué)電氣工程學(xué)院第第9 9章
29、章 編譯器和集成開發(fā)環(huán)境編譯器和集成開發(fā)環(huán)境廣西大學(xué)電氣工程學(xué)院廣西大學(xué)電氣工程學(xué)院第第9 9章章 編譯器和集成開發(fā)環(huán)境編譯器和集成開發(fā)環(huán)境 CVAVR中斷程序的編寫中斷程序的編寫(1) 不同的不同的C語言開發(fā)環(huán)境中斷服務(wù)程序的語法規(guī)則是不同的。在語言開發(fā)環(huán)境中斷服務(wù)程序的語法規(guī)則是不同的。在ICCAVR與與CVAVR編譯軟件中,將自動(dòng)加入現(xiàn)場保護(hù),現(xiàn)場恢復(fù)編譯軟件中,將自動(dòng)加入現(xiàn)場保護(hù),現(xiàn)場恢復(fù)以及中斷返回等措施。以及中斷返回等措施。 在在CVAR中,中斷服務(wù)函數(shù)的定義格式如下:中,中斷服務(wù)函數(shù)的定義格式如下: interrupt EXT_INTO void ext_int0_isr (vo
30、id) /中斷服務(wù)函數(shù)的函數(shù)體中斷服務(wù)函數(shù)的函數(shù)體 interrupt EXT_INT1 void ext_int1_isr (void) /中斷服務(wù)函數(shù)的函數(shù)體中斷服務(wù)函數(shù)的函數(shù)體 廣西大學(xué)電氣工程學(xué)院廣西大學(xué)電氣工程學(xué)院第第9 9章章 編譯器和集成開發(fā)環(huán)境編譯器和集成開發(fā)環(huán)境 CVAVR 中斷程序編程框架中斷程序編程框架(2)中斷編程框架:中斷編程框架: #include interrupt EXT_INT0 void ext_int0 _isr(void) . interrupt EXT_INT1 void ext_int1 _isr(void) . void main (void) G
31、ICR=0 xc0; / *允許開外中斷允許開外中斷0,1 GIFR =0 xc0; /*外中斷外中斷0,1中斷標(biāo)志位寫中斷標(biāo)志位寫1請(qǐng)請(qǐng)0 SREG=0 x80; /*開全局中斷標(biāo)志位開全局中斷標(biāo)志位 MCUCR=0 x0a; / *外中斷外中斷0,1均設(shè)為下降沿觸發(fā)均設(shè)為下降沿觸發(fā) / # asm(“sei”) /CVAVR內(nèi)嵌匯編指令,用于使能內(nèi)嵌匯編指令,用于使能SREG全局中斷位全局中斷位I while (1) . ; 廣西大學(xué)電氣工程學(xué)院廣西大學(xué)電氣工程學(xué)院第第9 9章章 編譯器和集成開發(fā)環(huán)境編譯器和集成開發(fā)環(huán)境廣西大學(xué)電氣工程學(xué)院廣西大學(xué)電氣工程學(xué)院第第9 9章章 編譯器和集成開
32、發(fā)環(huán)境編譯器和集成開發(fā)環(huán)境 CVAVR *軟件中斷程序的編寫軟件中斷程序的編寫(3)中斷編程舉例:按外中斷中斷編程舉例:按外中斷0顯示顯示0 -F;按外中斷按外中斷0顯示顯示F -0. #include unsigned char counter flash unsigned char LED_716=0 x3f; 0 x06; 0 x5b; 0 x4f; 0 x66; 0 x6d;0 x7d; 0 x07; 0 x7f; 0 x6f; 0 x77; 0 x7c; 0 x39; 0 x5e;0 x79; 0 x71 /共陰段碼共陰段碼 interrupt EXT_INT0 void ext_i
33、nt0 _isr(void) if (+counter =15 ) counter = 0; interrupt EXT_INT1 void ext_int1 _isr(void) if ( counter =1 ) - -counter ; else counter = 15 void main (void) DDRA = 0 xff; PORTA = 0 xff ; MCUCR=0 x0a; / *1外中斷外中斷0,1均設(shè)為下降沿觸發(fā)均設(shè)為下降沿觸發(fā) GICR |=0 xc0; / *2允許開外中斷允許開外中斷0,1 GIFR =0 xc0; /*3外中斷外中斷0,1中斷標(biāo)志位寫中斷標(biāo)志位
34、寫1請(qǐng)請(qǐng)0 counter = 0; # asm(“sei”) /CVAVR內(nèi)嵌匯編指令,用于使能內(nèi)嵌匯編指令,用于使能SREG全局中斷位全局中斷位I while (1) PORTA = LED_7 counter ; ; 廣西大學(xué)電氣工程學(xué)院廣西大學(xué)電氣工程學(xué)院第第9 9章章 編譯器和集成開發(fā)環(huán)境編譯器和集成開發(fā)環(huán)境 中斷系統(tǒng)應(yīng)用舉例中斷系統(tǒng)應(yīng)用舉例7.3(P142) 例題例題 D1-D8D1-D8,全亮全滅閃爍,亮,全亮全滅閃爍,亮/ /滅間隔滅間隔500MS500MS, 一旦外中斷一旦外中斷INT1INT1觸發(fā),報(bào)警燈發(fā)亮觸發(fā),報(bào)警燈發(fā)亮1 1秒鐘。秒鐘。 # include # inc
35、lude # define uchar unsigned char # define uint unsigned int # define BZ_0 (PORTD = PORTD&0 xdf ) # define BZ_1 (PORTD = PORTD|0 x20 ) uint cnt ; /定義全局無符號(hào)變量定義全局無符號(hào)變量cnt廣西大學(xué)電氣工程學(xué)院廣西大學(xué)電氣工程學(xué)院第第9 9章章 編譯器和集成開發(fā)環(huán)境編譯器和集成開發(fā)環(huán)境 中斷系統(tǒng)應(yīng)用舉例中斷系統(tǒng)應(yīng)用舉例7.3(P142) void main ( voin ) DDRA = 0 xff ; /定義定義A口輸出口輸出 PORTA = 0
36、xff ; /定義定義A口輸出高電平口輸出高電平 DDRD = 0 xf3 ; /定義定義D口口2,3為輸入,其它為輸出為輸入,其它為輸出 PORTD = 0 xff ; /定義定義D口初值為高電平口初值為高電平 MCUCR = 0 x0A ; /定義定義INT0,INT1下降沿觸發(fā)下降沿觸發(fā) GICR = 0 xC0 ; /開開INT0,INT1分中斷分中斷 SREG = 0X80 ; /開總中斷開總中斷 while (1) PORTA = 0X00 ; / 全亮全亮 delay_ms (500) ; /延時(shí)延時(shí)500毫秒毫秒 PORTA = 0Xff ; /全滅全滅 delay_ms (5
37、00) ; /延時(shí)延時(shí)500毫秒毫秒 廣西大學(xué)電氣工程學(xué)院廣西大學(xué)電氣工程學(xué)院第第9 9章章 編譯器和集成開發(fā)環(huán)境編譯器和集成開發(fā)環(huán)境中斷系統(tǒng)應(yīng)用舉例中斷系統(tǒng)應(yīng)用舉例7.3(P142) /在在CVAVR環(huán)境中中斷服務(wù)函數(shù)設(shè)置規(guī)格:環(huán)境中中斷服務(wù)函數(shù)設(shè)置規(guī)格: interrupt EXT_INT1 void ext1_isr (void ) /定義中斷服務(wù)子函數(shù)定義中斷服務(wù)子函數(shù) /* interrupt-表示中斷函數(shù);表示中斷函數(shù);EXT_INT1表示外中斷表示外中斷1向量號(hào);向量號(hào); void-表示空函數(shù);表示空函數(shù);ext_isr表示外中斷服務(wù)函數(shù);表示外中斷服務(wù)函數(shù); (void)表示空
38、形式參數(shù);表示空形式參數(shù);*/ for ( cnt = 0; cnt 50; cnt+) /報(bào)警報(bào)警10秒秒 BZ_1 ; delay_ms (100); /報(bào)警燈報(bào)警燈100ms高電平高電平 BZ_0 ; delay_ms (100); / 報(bào)警燈報(bào)警燈100ms低高電平低高電平 廣西大學(xué)電氣工程學(xué)院廣西大學(xué)電氣工程學(xué)院第第9 9章章 編譯器和集成開發(fā)環(huán)境編譯器和集成開發(fā)環(huán)境INT0、IHT1中斷嵌套中斷嵌套-1 (P147) 例題例題 D1-D8D1-D8,全亮全滅閃爍,亮,全亮全滅閃爍,亮/ /滅間隔滅間隔500MS500MS, 外中斷外中斷INT1INT1觸發(fā),報(bào)警燈閃亮觸發(fā),報(bào)警燈閃
39、亮1010秒鐘。在秒鐘。在INT1INT1中斷中斷服務(wù)處理程序中嵌套服務(wù)處理程序中嵌套INT0INT0中斷,高,低四位中斷,高,低四位100MS100MS交交替發(fā)亮替發(fā)亮1010秒。秒。 # include # include # define uchar unsigned char # define uint unsigned int # define BZ_0 (PORTD = PORTD&0 xdf )/與與0與為與為0 # define BZ_1 (PORTD = PORTD|0 x20 ) /與與1或?yàn)榛驗(yàn)? uint cnt ; /定義全局無符號(hào)變量定義全局無符號(hào)變量cnt廣西大學(xué)
40、電氣工程學(xué)院廣西大學(xué)電氣工程學(xué)院第第9 9章章 編譯器和集成開發(fā)環(huán)境編譯器和集成開發(fā)環(huán)境INT0、IHT1中斷嵌套中斷嵌套-2 (P147)void main ( voin ) DDRA = 0 xff ; /定義定義A口輸出口輸出 PORTA = 0 xff ; /定義定義A口輸出高電平口輸出高電平 DDRD = 0 xf3 ; /定義定義D口口2,3為輸入,其它為輸出為輸入,其它為輸出 PORTA = 0 xff ; /定義定義D口初值為高電平口初值為高電平 MCUCR = 0 x0A ; /定義定義INT0,INT1下降沿觸發(fā)下降沿觸發(fā) GICR = 0 xC0 ; /開開INT0,IN
41、T1分中斷分中斷 SREG = 0X80 ; /開總中斷開總中斷 while (1) PORTA = 0X00 ; / 全亮全亮 delay_ms (500) ; /延時(shí)延時(shí)500毫秒毫秒 PORTA = 0Xff ; /全滅全滅 delay_ms (500) ; /延時(shí)延時(shí)500毫秒毫秒 廣西大學(xué)電氣工程學(xué)院廣西大學(xué)電氣工程學(xué)院第第9 9章章 編譯器和集成開發(fā)環(huán)境編譯器和集成開發(fā)環(huán)境INT0、IHT1中斷嵌套中斷嵌套-3 (P147)interrupt EXT_INT1 void ext1_isr (void ) /定義中斷服務(wù)子函數(shù)定義中斷服務(wù)子函數(shù) SREG=0 x80; for ( c
42、nt = 0; cnt 50; cnt+) /報(bào)警報(bào)警10秒秒 BZ_1 ; delay_ms (100); /報(bào)警燈報(bào)警燈100ms高電平高電平 BZ_0 ; delay_ms (100); / 報(bào)警燈報(bào)警燈100ms低高電平低高電平 interrupt EXT_INT0 void ext0_isr (void ) /定義中斷服務(wù)子函數(shù)定義中斷服務(wù)子函數(shù) for ( cnt = 0; cnt 10; cnt+) /閃亮閃亮2秒秒 PORTC=0 x0f; delay_ms(100); PORTC=0 xf0; delay_ms(100); 廣西大學(xué)電氣工程學(xué)院廣西大學(xué)電氣工程學(xué)院第第9 9章章 編譯器和集成開發(fā)環(huán)境編譯器和集成開發(fā)環(huán)境 中斷系統(tǒng)應(yīng)用舉例中斷系統(tǒng)應(yīng)用舉例7.4 (P144)例題例題:按下:按下INT0鍵,數(shù)碼管鍵,數(shù)碼管1、0顯示顯示0099, 按下按下INT1鍵,數(shù)碼管鍵,數(shù)碼管1、0顯示顯示9900。 # include / 輸入輸入/輸出端口包含頭文件輸出端口包含頭文件 # include # define uchar unsingned char /定義定義uchar為無符號(hào)字符數(shù)據(jù)為無符號(hào)字符數(shù)據(jù) # deinde uint unsingned int /定義定義uint為無符號(hào)整形數(shù)據(jù)為無符號(hào)整形數(shù)據(jù) flash uchar SEG7 1
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國自立型塑料包裝袋市場分析及競爭策略研究報(bào)告
- 2025至2030年中國純棉移圈提花布市場分析及競爭策略研究報(bào)告
- 2025至2030年中國真皮鞋跟市場分析及競爭策略研究報(bào)告
- 2025至2030年中國琥珀消石沖劑市場分析及競爭策略研究報(bào)告
- 2025至2030年中國水平爬坡皮帶輸送機(jī)市場分析及競爭策略研究報(bào)告
- 2025至2030年中國服裝胸絨市場分析及競爭策略研究報(bào)告
- 2025至2030年中國平板電視架市場分析及競爭策略研究報(bào)告
- 2025至2030年中國多級(jí)離心水泵市場分析及競爭策略研究報(bào)告
- 2025至2030年中國葉蠟石顆粒市場分析及競爭策略研究報(bào)告
- 2025至2030年中國兒童型維生素片市場分析及競爭策略研究報(bào)告
- 2025年神經(jīng)外科護(hù)理人文關(guān)懷計(jì)劃
- T/CHC 1008-2023即食益生菌食品
- 【課件】醫(yī)學(xué)研究項(xiàng)目申請(qǐng)書的撰寫-以國家自然科學(xué)基為例
- 《咖啡的風(fēng)味》課件
- 智能太陽能路燈行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 2024年云南省嵩明縣事業(yè)單位公開招聘教師崗筆試題帶答案
- 小型船舶駕駛員考試復(fù)習(xí)題庫(濃縮500題)
- 2025年安全生產(chǎn)月主題培訓(xùn)課件:如何查找身邊安全隱患
- 申請(qǐng)發(fā)票額度合同(2025年版)
- 互聯(lián)網(wǎng)100個(gè)創(chuàng)業(yè)項(xiàng)目
- 游泳教練員聘用協(xié)議(適用版)5篇
評(píng)論
0/150
提交評(píng)論