




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
恭喜你:選擇了正確的AVR學習資料ATmega16的中斷系統
ATmega16的中斷源和中斷向量
AVR一般擁有數十個中斷源,每個中斷源都有獨立的中斷向量。AVR的程序存儲區(qū)的最低端,即從Flash地址的0x0000開始用于放置中斷向量,稱作中斷向量區(qū)。各種型號的AVR中斷向量區(qū)的大小是不同的,由下式決定:中斷向量區(qū)大小=中斷源個數×每個中斷向量占據字數AVR的21個中斷中,包含1個非屏蔽中斷(RESET)3個外部中斷(INT0、INT1、INT2)和17個內部中斷,恭喜你:選擇了正確的AVR學習資料ATmega16的中斷源和1AVR單片機新手入門必看教程課件2AVR單片機新手入門必看教程課件31.外部中斷INT0、INT1和INT2是3個外部中斷源,它們是分別由芯片外部引腳PD2、PD3、PB2上的電平的變化或狀態(tài)觸發(fā)的。通過對控制寄存器MCUCR和控制與狀態(tài)寄存器MCUCSR的配置,外部中斷可以定義為由PD2、PD3、PB2引腳上的電平的下降沿、上升沿、邏輯電平變化,或者低電平(INT2僅支持電平變化的邊沿觸發(fā))觸發(fā)。1.外部中斷43個定時計數器觸發(fā)的內部中斷MER2COMPTIMER2OVF定時溢出2TIMER1CAPT撲捉溢出1TIMER1COMPA定時比較ATIMER1COMPB定時比較BTIMER1OVF定時溢出2TIMER0OVF定時溢出0TIMER0COMP定時比較0同步/異步串行接收和轉發(fā)器USART的內部中斷USARTRXC接收一個字節(jié)USARTTXC發(fā)送一個字節(jié)USARTUDRE發(fā)送數據寄存器為空3個定時計數器觸發(fā)的內部中斷MER2COMP5其它內部中斷SPISTC為內部SPI串行接口傳送結束中斷ADC為ADC單元完成一次A/D轉換的中斷EE_RDY是片內的EEPROM就緒(對EEPROM的操作完成)中斷ANA_COMP是由內置的模擬比較器輸出引發(fā)的中斷TWI為內部兩線串行接口的中斷SPM_RDY是對片內的Flash寫操作完成中斷其它內部中斷SPISTC為內部SPI串行接口傳送結束中斷6ATmega16的中斷控制中斷優(yōu)先級的確定1.在AVR單片機中,一個中斷在中斷向量區(qū)中的位置決定了它的優(yōu)先級,位于低地址的中斷優(yōu)先級高于位于高地址的中斷。2.AVR單片機采用固定的硬件優(yōu)先級方式,不支持通過軟件對中斷優(yōu)先級的重新設定。
AVR有兩種機制不同的中斷:帶有中斷標志的中斷(可掛起)不帶中斷標志的中斷(不能掛起)。中斷標志在AVR中,大多數的中斷都屬于帶中斷標志的中斷。
ATmega16的中斷控制中斷優(yōu)先級的確定1.在AVR單片機7中斷標志概念每個中斷源在其I/O空間寄存器中具有自己的一個中斷標志位。AVR的硬件系統在每個時鐘周期內都會檢測(接受)外部(內部)中斷源的中斷條件。一旦中斷條件滿足,AVR的硬件就會將置位相應的中斷標志位(置為“1”),表示向MCU提起中斷請求。中斷標志清除中斷標志位一般在MCU響應該中斷時,由硬件自動清除,或在中斷服務程序中通過讀/寫專門數據寄存器的方式自動清除。中斷標志位除了由硬件自動清除外也可以使用軟件指令清除,注意:如用軟件方法清除,清除的方法是對其寫“1”。
不帶(不設置)中斷標志的中斷:如配置為低電平觸發(fā)的外部中斷即為此類型的中斷低電平中斷的重要應用是喚醒處于休眠工作模式的MCU。中斷標志概念中斷標志清除8三、中斷屏蔽與管理
為全局中斷允許控制位:中斷允許的總控制位I(標志寄存器SREG中的I標志位SREG.7)每一個中斷源都設置了獨立的中斷允許位
AVR對中斷采用兩級控制方式。這些中斷允許位分散位于各中斷源所屬模塊的控制寄存器中。AVR響應一個可屏蔽中斷源(假定為A中斷)的中斷的條件是:1.響應A中斷=全局中斷允許標志AND中斷A允許標志AND中斷A標志2.AVR復位后,各個中斷允許位以及全局中斷允許位均被清零,這保證了程序在開始執(zhí)行時(一般程序開頭是對芯片內部以及外圍系統的初始化配置)不會受到中斷的干擾。3.在AVR復位后的用戶初始化程序中,需要先對需要使用的中斷源進行必要的配置。待系統初始化過程結束后再置位I,使系統進入正常的工作狀態(tài),開始響應中斷請求。三、中斷屏蔽與管理為全局中斷允許控制位:中斷允許的總控制位9由于AVR在響應一個中斷的過程中通過硬件將I標志位自動清零,這樣就阻止了MCU響應其它中斷。因此通常情況下,AVR是不能自動實現中斷嵌套的。如要系統中必須要實現中斷嵌套的應用,用戶可在中斷服務程序中使用指令將全局中斷允許位開放,通過間接的方式實現中斷的嵌套處理。四、中斷嵌套
由于AVR在響應一個中斷的過程中通過硬件將I標志位自動清零,10外部中斷觸發(fā)方式和特點
INT0、INT1、INT2的中斷觸發(fā)方式取決于用戶程序對MCU控制寄存器MCUCR以及MCU控制與狀態(tài)寄存器MCUCSR的設定。其中,INT0和INT1支持4種中斷觸發(fā)方式,INT2支持2種。
任意電平變化觸發(fā)表示只要引腳上有邏輯電平的變化就會產生中斷申請(不管是上升沿還是下降沿都引起中斷觸發(fā))外部中斷觸發(fā)方式和特點INT0、INT1、114種觸發(fā)方式中,還有以下的一些不同的特點:低電平觸發(fā)是不帶中斷標志類型的,即只要中斷輸入引腳PD2或PD3保持低電平,那么將一直會產生中斷申請。2.MCU對INT0和INT1的引腳上的上升沿或下降沿變化的識別(觸發(fā)),需要I/O時鐘信號的存在(由I/O時鐘同步檢測),屬于同步邊沿觸發(fā)的中斷類型。3.MCU對INT2的引腳上的上升沿或下降沿變化的識別(觸發(fā)),以及低電平的識別(觸發(fā))是通過異步方式檢測的,不需要I/O時鐘信號的存在。因此,這類觸發(fā)類型的中斷經常作為外部喚醒源,用于將處在Idle休眠模式,以及處在各種其它休眠模式的MCU喚醒。這是由于除了在空閑(Idel)模式時,I/O時鐘信號還保持繼續(xù)工作,在其它各種休眠模式下,I/O時鐘信號均是處在暫停狀態(tài)的。4種觸發(fā)方式中,還有以下的一些不同的特點:低電平觸發(fā)是不帶中124.如果使用低電平觸發(fā)方式的中斷作為喚醒源,將MCU從掉電模式(Power-down)中喚醒時,電平拉低后仍需要維持一段時間才能將MCU喚醒,這是為了提高了MCU的抗噪性能。拉低的觸發(fā)電平將由看門狗的時鐘信號采樣兩次(在通常的5V電源和25℃時,看門狗的時鐘周期為1μs)。如果電平拉低保持2次采樣周期的時間,或者一直保持到MCU啟動延時(start-uptime)過程之后,MCU將被喚醒并進入中斷服務。如果該電平的保持時間能夠滿足看門狗時鐘的兩次采樣,但在啟動延時(start-uptime)過程完成之前就消失了,那么MCU仍將被喚醒,但不會觸發(fā)中斷進入中斷服務程序。所以,為了保證既能將MCU喚醒,又能觸發(fā)中斷,中斷觸發(fā)電平必須維持足夠長的時間。5.如果設置了允許響應外部中斷的請求,則即便是引腳PD2、PD3、PB2設置為輸出方式工作,引腳上的電平變化也會產生外部中斷觸發(fā)請求。這一特性為用戶提供了使用軟件產生中斷的途徑。4.如果使用低電平觸發(fā)方式的中斷作為喚醒源,將MCU從掉電模13與外部中斷相關的寄存器和標志位在ATmega16中,與外部中斷有關的寄存器有4個,共有11個標志位。其作用分別是3個外部中斷各自的中斷標志位,中斷允許控制位,和用于定義外部中斷的觸發(fā)類型。1)MCU中斷方式控制寄存器—MCUCR
MCU控制寄存器MCUCR的低4位為INT0(ISC01、ISC00)和INT1(ISC11、ISC10)中斷觸發(fā)類型控制位與外部中斷相關的寄存器和標志位在ATmega14
MCU對INT0、INT1引腳上電平值的采樣在邊沿檢測前。1.如果選擇脈沖邊沿觸發(fā)或電平變化中斷的方式,那么在INT0、INT1引腳上的一個脈寬大于一個時鐘周期的脈沖變化將觸發(fā)中斷,過短的脈沖則不能保證觸發(fā)中斷。2.如果選擇低電平觸發(fā)中斷,那么低電平必須保持到當前指令執(zhí)行完成才觸發(fā)中斷。如果是低電平觸發(fā)方式的話,中斷請求將一直保持到引腳上的低電平消失為止。MCU對INT0、INT1引腳上電平值的采樣在邊沿檢測前152)MCU控制和狀態(tài)寄存器—MCUCSR
MCU控制和狀態(tài)寄存器MCUCSR中的第6位(ISC2)為INT2的中斷觸發(fā)類型控制位
2)MCU控制和狀態(tài)寄存器—MCUCSRM163)通用中斷允許控制寄存器
—GICR
通用中斷控制寄存器GICR的高3位為INT0、INT1和INT2的中斷允許控制位。GICR寄存器中相應的中斷允許位被置為“1”,當外部引腳INT0(或INT1、或INT2)上的電平變化時,MCU將會響應相應的中斷請求。
3)通用中斷允許控制寄存器—GICR通174)通用中斷標志寄存器—GIFR中斷標志寄存器GIFR的高3位為INT0、INT1和INT2的中斷標志位
當INT2..0引腳上的有效事件滿足中斷觸發(fā)條件后,INTF2..0位會變成“1”。如果此時SREG寄存器中I=1,以及GICR寄存器中的INTn被置為“1”,MCU將響應中斷請求,跳至相應的中斷向量處開始執(zhí)行中斷服務程序,同時硬件自動將INTFn標志位清零。用戶可以使用指令將INTFn清除,清除的方式是寫邏輯“1”到INTFn,將標志清零。當INT0(INT1)設置為低電平觸發(fā)方式時,標志位INTF0(INTF1)始終為“0”,這并不意味著不產生中斷請求,而是低電平觸發(fā)方式是不帶中斷標志類型的中斷觸發(fā)。
4)通用中斷標志寄存器—GIFR中斷標志寄存器GIFR的高18在系統程序的初始化部分中對外部中斷進行設置時(定義或改變觸發(fā)方式),應先將GICR寄存器中該中斷的中斷允許位清零,禁止MCU響應該中斷后再設置ISCn位。而在開放中斷允許前,一般應通過向GIFR寄存器中的中斷標志位INTFn寫入邏輯“1”,將該中斷的中斷標志位清除,然后開放中斷。這樣可以防止在改變ISCn的過程中誤觸發(fā)中斷。在系統程序的初始化部分中對外部中斷進行設置時(定義19中斷服務程序的編寫中斷服務程序的編寫編寫中斷服務程序的兩個基本原則:
1.全面、仔細考慮中斷現場的保護和恢復。2.中斷服務程序應盡可能的短
不同高級語言開發(fā)環(huán)境中對編寫中斷服務程序的語法規(guī)則和處理方法是不同的。用戶在編寫中斷服務程序前,應對所使用開發(fā)平臺,中斷程序的編寫方法,中斷的處理方法等有較好的了解。使用ICCAVR等高級語言編寫中斷服務程序時,用戶通常不必考慮中斷現場保護和恢復的處理,這是由于編譯器在編譯中斷服務程序的源代碼時,會在生成的目標代碼中自動加入相應的中斷現場保護和恢復的指令,同時自動采用RETI指令作為中斷服務的返回指令。
中斷服務程序的編寫中斷服務程序的編寫編寫中斷服務程序的兩個基20
在ICCAVRR中,只要用#pragma偽指令和中斷向量說明中斷服務程序的入口地址。中斷服務函數按以下格式定義:#pragmainterrupt_handler<函數名>:<中斷向量>
如:INT0中斷服務程序#pragmainterrupt_handlerint0_isr:2voidint0_isr(void){\\中斷服務程序}C編譯器會自動幫助用戶產生正確的中斷向量處的以及初始化堆棧指針的代碼,同時在中斷服務程序中自動生成中斷現場保護和恢復(函數中用到的全部寄存器保護)及使用RETI指令返回。在ICCAVRR中,只要用#pragma偽21圖中使用了兩個按鍵K1、K2,按鍵的一端分別與PD2(INT0)、PD3(INT1)連接。INT0和INT1作為外部中斷的輸入,采用電平變化的下降沿觸發(fā)方式,當K1(K2)按下時,會在PD2(PD3)引腳上產生一個高電平到低電平的跳變,觸發(fā)INT0或INT1中斷。外部中斷應用實例硬件電路
圖中使用了兩個按鍵K1、K2,按鍵的一端分別與PD2(INT22應用中斷應舉例:定時掃描數碼管,INT0、INT1按鍵下降沿出發(fā)中斷,使鍵值分別加減1/******功能:INT0中斷函數,使鍵值加1******/#pragmainterrupt_handlerInt0_isr:2voidInt0_isr(void){ delay_nms(20);//延時大約20毫秒,去抖 if(KEY0==0) //再次判斷按鍵是否按下 { while(KEY0==0);//等待按鍵釋放 Key_Number++; //鍵值加1 }}/******功能:INT0中斷函數,使鍵值23/******功能:INT1中斷函數,使鍵值減1******/#pragmainterrupt_handlerInt1_isr:3voidInt1_isr(void){ delay_nms(20); //延時大約20毫秒,去抖 if(KEY1==0) //再次判斷按鍵是否按下 { while(KEY1==0); //等待按鍵釋放 Key_Number--; //鍵值減1 } }/******功能:INT1中斷函數,使鍵值24/******功能:Timer0溢出中斷,數碼管掃描******/#pragmainterrupt_handlerTimer0_ovf_isr:10voidTimer0_ovf_isr(void){ Display_One_SMG(2,Key_Number/100); //在第三位數碼管顯示百位 Display_One_SMG(1,Key_Number%100/10);//在第二位數碼管顯示十位 Display_One_SMG(0,Key_Number%100%10);//在第一位數碼管顯示個位}/******功能:Timer0溢出中斷,數25/******功能:Timer0初始化程序******/voidTimer0_Init(void){TCCR0=0x00; //停止Timer0工作TCNT0=0x00; //清TCNT0TCCR0|=(1<<CS02); //啟動Timer0,系統時鐘256分頻}/******功能:Timer0初始化程序26/主函數名稱:main()*//******功能:定時掃描數碼管,INT0、INT1按鍵******//******下降沿出發(fā)中斷,使鍵值分別加、減1。*/
voidmain(void){CLI(); //關閉中斷CPU_Init(); //初始化CPUTimer0_Init(); //初始化定時器0MCUCR|=(1<<ISC11)|(1<<ISC01); //設置INT0、INT1下降沿觸發(fā)中斷GICR|=(1<<INT1)|(1<<INT0); //使能INT0、INT1中斷 TIMSK|=(1<<TOIE0); //使能Timer0溢出中斷 SEI(); //打開中斷 while( 1) //動態(tài)暫停}/主函數名稱:main()*/27AVR單片機新手入門必看教程課件28恭喜你:選擇了正確的AVR學習資料ATmega16的中斷系統
ATmega16的中斷源和中斷向量
AVR一般擁有數十個中斷源,每個中斷源都有獨立的中斷向量。AVR的程序存儲區(qū)的最低端,即從Flash地址的0x0000開始用于放置中斷向量,稱作中斷向量區(qū)。各種型號的AVR中斷向量區(qū)的大小是不同的,由下式決定:中斷向量區(qū)大小=中斷源個數×每個中斷向量占據字數AVR的21個中斷中,包含1個非屏蔽中斷(RESET)3個外部中斷(INT0、INT1、INT2)和17個內部中斷,恭喜你:選擇了正確的AVR學習資料ATmega16的中斷源和29AVR單片機新手入門必看教程課件30AVR單片機新手入門必看教程課件311.外部中斷INT0、INT1和INT2是3個外部中斷源,它們是分別由芯片外部引腳PD2、PD3、PB2上的電平的變化或狀態(tài)觸發(fā)的。通過對控制寄存器MCUCR和控制與狀態(tài)寄存器MCUCSR的配置,外部中斷可以定義為由PD2、PD3、PB2引腳上的電平的下降沿、上升沿、邏輯電平變化,或者低電平(INT2僅支持電平變化的邊沿觸發(fā))觸發(fā)。1.外部中斷323個定時計數器觸發(fā)的內部中斷MER2COMPTIMER2OVF定時溢出2TIMER1CAPT撲捉溢出1TIMER1COMPA定時比較ATIMER1COMPB定時比較BTIMER1OVF定時溢出2TIMER0OVF定時溢出0TIMER0COMP定時比較0同步/異步串行接收和轉發(fā)器USART的內部中斷USARTRXC接收一個字節(jié)USARTTXC發(fā)送一個字節(jié)USARTUDRE發(fā)送數據寄存器為空3個定時計數器觸發(fā)的內部中斷MER2COMP33其它內部中斷SPISTC為內部SPI串行接口傳送結束中斷ADC為ADC單元完成一次A/D轉換的中斷EE_RDY是片內的EEPROM就緒(對EEPROM的操作完成)中斷ANA_COMP是由內置的模擬比較器輸出引發(fā)的中斷TWI為內部兩線串行接口的中斷SPM_RDY是對片內的Flash寫操作完成中斷其它內部中斷SPISTC為內部SPI串行接口傳送結束中斷34ATmega16的中斷控制中斷優(yōu)先級的確定1.在AVR單片機中,一個中斷在中斷向量區(qū)中的位置決定了它的優(yōu)先級,位于低地址的中斷優(yōu)先級高于位于高地址的中斷。2.AVR單片機采用固定的硬件優(yōu)先級方式,不支持通過軟件對中斷優(yōu)先級的重新設定。
AVR有兩種機制不同的中斷:帶有中斷標志的中斷(可掛起)不帶中斷標志的中斷(不能掛起)。中斷標志在AVR中,大多數的中斷都屬于帶中斷標志的中斷。
ATmega16的中斷控制中斷優(yōu)先級的確定1.在AVR單片機35中斷標志概念每個中斷源在其I/O空間寄存器中具有自己的一個中斷標志位。AVR的硬件系統在每個時鐘周期內都會檢測(接受)外部(內部)中斷源的中斷條件。一旦中斷條件滿足,AVR的硬件就會將置位相應的中斷標志位(置為“1”),表示向MCU提起中斷請求。中斷標志清除中斷標志位一般在MCU響應該中斷時,由硬件自動清除,或在中斷服務程序中通過讀/寫專門數據寄存器的方式自動清除。中斷標志位除了由硬件自動清除外也可以使用軟件指令清除,注意:如用軟件方法清除,清除的方法是對其寫“1”。
不帶(不設置)中斷標志的中斷:如配置為低電平觸發(fā)的外部中斷即為此類型的中斷低電平中斷的重要應用是喚醒處于休眠工作模式的MCU。中斷標志概念中斷標志清除36三、中斷屏蔽與管理
為全局中斷允許控制位:中斷允許的總控制位I(標志寄存器SREG中的I標志位SREG.7)每一個中斷源都設置了獨立的中斷允許位
AVR對中斷采用兩級控制方式。這些中斷允許位分散位于各中斷源所屬模塊的控制寄存器中。AVR響應一個可屏蔽中斷源(假定為A中斷)的中斷的條件是:1.響應A中斷=全局中斷允許標志AND中斷A允許標志AND中斷A標志2.AVR復位后,各個中斷允許位以及全局中斷允許位均被清零,這保證了程序在開始執(zhí)行時(一般程序開頭是對芯片內部以及外圍系統的初始化配置)不會受到中斷的干擾。3.在AVR復位后的用戶初始化程序中,需要先對需要使用的中斷源進行必要的配置。待系統初始化過程結束后再置位I,使系統進入正常的工作狀態(tài),開始響應中斷請求。三、中斷屏蔽與管理為全局中斷允許控制位:中斷允許的總控制位37由于AVR在響應一個中斷的過程中通過硬件將I標志位自動清零,這樣就阻止了MCU響應其它中斷。因此通常情況下,AVR是不能自動實現中斷嵌套的。如要系統中必須要實現中斷嵌套的應用,用戶可在中斷服務程序中使用指令將全局中斷允許位開放,通過間接的方式實現中斷的嵌套處理。四、中斷嵌套
由于AVR在響應一個中斷的過程中通過硬件將I標志位自動清零,38外部中斷觸發(fā)方式和特點
INT0、INT1、INT2的中斷觸發(fā)方式取決于用戶程序對MCU控制寄存器MCUCR以及MCU控制與狀態(tài)寄存器MCUCSR的設定。其中,INT0和INT1支持4種中斷觸發(fā)方式,INT2支持2種。
任意電平變化觸發(fā)表示只要引腳上有邏輯電平的變化就會產生中斷申請(不管是上升沿還是下降沿都引起中斷觸發(fā))外部中斷觸發(fā)方式和特點INT0、INT1、394種觸發(fā)方式中,還有以下的一些不同的特點:低電平觸發(fā)是不帶中斷標志類型的,即只要中斷輸入引腳PD2或PD3保持低電平,那么將一直會產生中斷申請。2.MCU對INT0和INT1的引腳上的上升沿或下降沿變化的識別(觸發(fā)),需要I/O時鐘信號的存在(由I/O時鐘同步檢測),屬于同步邊沿觸發(fā)的中斷類型。3.MCU對INT2的引腳上的上升沿或下降沿變化的識別(觸發(fā)),以及低電平的識別(觸發(fā))是通過異步方式檢測的,不需要I/O時鐘信號的存在。因此,這類觸發(fā)類型的中斷經常作為外部喚醒源,用于將處在Idle休眠模式,以及處在各種其它休眠模式的MCU喚醒。這是由于除了在空閑(Idel)模式時,I/O時鐘信號還保持繼續(xù)工作,在其它各種休眠模式下,I/O時鐘信號均是處在暫停狀態(tài)的。4種觸發(fā)方式中,還有以下的一些不同的特點:低電平觸發(fā)是不帶中404.如果使用低電平觸發(fā)方式的中斷作為喚醒源,將MCU從掉電模式(Power-down)中喚醒時,電平拉低后仍需要維持一段時間才能將MCU喚醒,這是為了提高了MCU的抗噪性能。拉低的觸發(fā)電平將由看門狗的時鐘信號采樣兩次(在通常的5V電源和25℃時,看門狗的時鐘周期為1μs)。如果電平拉低保持2次采樣周期的時間,或者一直保持到MCU啟動延時(start-uptime)過程之后,MCU將被喚醒并進入中斷服務。如果該電平的保持時間能夠滿足看門狗時鐘的兩次采樣,但在啟動延時(start-uptime)過程完成之前就消失了,那么MCU仍將被喚醒,但不會觸發(fā)中斷進入中斷服務程序。所以,為了保證既能將MCU喚醒,又能觸發(fā)中斷,中斷觸發(fā)電平必須維持足夠長的時間。5.如果設置了允許響應外部中斷的請求,則即便是引腳PD2、PD3、PB2設置為輸出方式工作,引腳上的電平變化也會產生外部中斷觸發(fā)請求。這一特性為用戶提供了使用軟件產生中斷的途徑。4.如果使用低電平觸發(fā)方式的中斷作為喚醒源,將MCU從掉電模41與外部中斷相關的寄存器和標志位在ATmega16中,與外部中斷有關的寄存器有4個,共有11個標志位。其作用分別是3個外部中斷各自的中斷標志位,中斷允許控制位,和用于定義外部中斷的觸發(fā)類型。1)MCU中斷方式控制寄存器—MCUCR
MCU控制寄存器MCUCR的低4位為INT0(ISC01、ISC00)和INT1(ISC11、ISC10)中斷觸發(fā)類型控制位與外部中斷相關的寄存器和標志位在ATmega42
MCU對INT0、INT1引腳上電平值的采樣在邊沿檢測前。1.如果選擇脈沖邊沿觸發(fā)或電平變化中斷的方式,那么在INT0、INT1引腳上的一個脈寬大于一個時鐘周期的脈沖變化將觸發(fā)中斷,過短的脈沖則不能保證觸發(fā)中斷。2.如果選擇低電平觸發(fā)中斷,那么低電平必須保持到當前指令執(zhí)行完成才觸發(fā)中斷。如果是低電平觸發(fā)方式的話,中斷請求將一直保持到引腳上的低電平消失為止。MCU對INT0、INT1引腳上電平值的采樣在邊沿檢測前432)MCU控制和狀態(tài)寄存器—MCUCSR
MCU控制和狀態(tài)寄存器MCUCSR中的第6位(ISC2)為INT2的中斷觸發(fā)類型控制位
2)MCU控制和狀態(tài)寄存器—MCUCSRM443)通用中斷允許控制寄存器
—GICR
通用中斷控制寄存器GICR的高3位為INT0、INT1和INT2的中斷允許控制位。GICR寄存器中相應的中斷允許位被置為“1”,當外部引腳INT0(或INT1、或INT2)上的電平變化時,MCU將會響應相應的中斷請求。
3)通用中斷允許控制寄存器—GICR通454)通用中斷標志寄存器—GIFR中斷標志寄存器GIFR的高3位為INT0、INT1和INT2的中斷標志位
當INT2..0引腳上的有效事件滿足中斷觸發(fā)條件后,INTF2..0位會變成“1”。如果此時SREG寄存器中I=1,以及GICR寄存器中的INTn被置為“1”,MCU將響應中斷請求,跳至相應的中斷向量處開始執(zhí)行中斷服務程序,同時硬件自動將INTFn標志位清零。用戶可以使用指令將INTFn清除,清除的方式是寫邏輯“1”到INTFn,將標志清零。當INT0(INT1)設置為低電平觸發(fā)方式時,標志位INTF0(INTF1)始終為“0”,這并不意味著不產生中斷請求,而是低電平觸發(fā)方式是不帶中斷標志類型的中斷觸發(fā)。
4)通用中斷標志寄存器—GIFR中斷標志寄存器GIFR的高46在系統程序的初始化部分中對外部中斷進行設置時(定義或改變觸發(fā)方式),應先將GICR寄存器中該中斷的中斷允許位清零,禁止MCU響應該中斷后再設置ISCn位。而在開放中斷允許前,一般應通過向GIFR寄存器中的中斷標志位INTFn寫入邏輯“1”,將該中斷的中斷標志位清除,然后開放中斷。這樣可以防止在改變ISCn的過程中誤觸發(fā)中斷。在系統程序的初始化部分中對外部中斷進行設置時(定義47中斷服務程序的編寫中斷服務程序的編寫編寫中斷服務程序的兩個基本原則:
1.全面、仔細考慮中斷現場的保護和恢復。2.中斷服務程序應盡可能的短
不同高級語言開發(fā)環(huán)境中對編寫中斷服務程序的語法規(guī)則和處理方法是不同的。用戶在編寫中斷服務程序前,應對所使用開發(fā)平臺,中斷程序的編寫方法,中斷的處理方法等有較好的了解。使用ICCAVR等高級語言編寫中斷服務程序時,用戶通常不必考慮中斷現場保護和恢復的處理,這是由于編譯器在編譯中斷服務程序的源代碼時,會在生成的目標代碼中自動加入相應的中斷現場保護和恢復的指令,同時自動采用RETI指令作為中斷服務的返回指令。
中斷服務程序的編寫中斷服務程序的編寫編寫中斷服務程序的兩個基48
在ICCAVRR中,只要用#pragma偽指令和中斷向量說明中斷服務程序的入口地址。中斷服務函數按以下格式定義:#pragmainterrupt_handler<函數名>:<中斷向量>
如:INT0中斷服務程序#pragmainterrupt_handlerint0_isr:2voidint0_isr(void){\\中斷服務程序}C編譯器會自動幫助用戶產生正確的中斷向量處的以及初始化堆棧指針的代碼,同時在中斷服務程序中自動生成中斷現場保護和恢復(函數中用到的全部寄存器保護)及使用RETI指令返回。在ICCAVRR中,只要用#pragma偽49圖中使用了兩個按鍵K1、K2,按鍵的一端分別與PD2(INT0)、PD3(INT1)連接。INT0和INT1作為外部中斷的輸入,采用電平變化的下降沿觸發(fā)方式,當K1(K2)按下時,會在PD2(PD3)引腳上產生一個高電平到低電平的跳變,觸發(fā)INT0或INT1中斷。外部中斷應用實例硬件電路
圖中使用了兩個按鍵K1、K2,按鍵的一端分別與PD2(INT50應用中斷應舉例:定時掃描數碼管,INT0、INT1按鍵下降沿出發(fā)中斷,使鍵值分別加減1/******功能:INT0中斷函數,使鍵值加1******/#pragmainterrupt_handlerInt0_isr:2voidInt0_isr(void){ delay_nms(20);//延時大約20毫秒,去抖 if(KEY0==0) //再次判斷按鍵是否按下 { while(KEY0==0);//等待按鍵釋放
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程制圖基礎 05第三章學習資料
- 江蘇省常州市新北區(qū)重點名校2025屆初三中考模擬沖刺卷(提優(yōu)卷)(一)生物試題含解析
- 山東經貿職業(yè)學院《管理學經典閱讀》2023-2024學年第二學期期末試卷
- 唐山師范學院《工程估價與實務》2023-2024學年第二學期期末試卷
- 卓越學術之路
- 二零二五版車輛質押借款合同書范例
- 天津家庭裝修合同書
- 轉診合作協議書模板
- 私人借款延期補充協議書
- 引領家居設計創(chuàng)新
- 尾礦庫基本知識
- 財會實操-體育館的賬務處理分錄
- 雙匯冷鏈物流-2
- 2024年安徽中考歷史試卷試題答案解析及備考指導課件
- 2024急救培訓心肺復蘇課件
- 人文關懷護理課件
- 2024山東能源集團中級人才庫選拔高頻考題難、易錯點模擬試題(共500題)附帶答案詳解
- 2024屆合肥市高三第三次教學質量檢測 英語答案
- 中考復習尺規(guī)作圖的路徑與原理
- 手術器械檢查與保養(yǎng)
- (正式版)JBT 14694-2024 電氣絕緣用合成有機酯與結構材料的相容性試驗方法
評論
0/150
提交評論