<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > avr單片機外部中斷0,1,2初始化配置及說明

          avr單片機外部中斷0,1,2初始化配置及說明

          作者: 時間:2016-11-18 來源:網(wǎng)絡(luò) 收藏
          #include

          #include
          /*1.狀態(tài)寄存器SREG

          本文引用地址:http://www.ex-cimer.com/article/201611/315759.htm

          bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

          I T H S V N Z C

          I:全局中斷使能位。

          在I置位后,單獨的中斷使能由不同的中斷寄存器控制。若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 激發(fā),如果 SREG 寄存器的 I 標志位和相應(yīng)的中斷屏蔽位置位的話。在檢測邊沿前 MCU 首先采樣 INT1 引腳上的電平。如果選擇了邊沿觸發(fā)方式或電平變化觸發(fā)方式,那么持續(xù)時間大于一個時鐘周期的脈沖將觸發(fā)中斷,過短的脈沖則不能保證觸發(fā)中斷。如果選擇低電平觸發(fā)方式,那么低電平必須保持到當前指令執(zhí)行完成。
          SE:MCU休眠使能位
          SM1~SM0: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 擴展Standby(1) 模式


          ISC11 ISC10 說明

          0 0 INT1 為低電平時產(chǎn)生中斷請求

          0 1 INT1 引腳上任意的邏輯電平變化都將引發(fā)中斷

          1 0 INT1 的下降沿產(chǎn)生異步中斷請求

          1 1 INT1 的上升沿產(chǎn)生異步中斷請求
          外部中斷 0 由引腳 INT0 激發(fā),如果 SREG 寄存器的 I 標志位和相應(yīng)的中斷屏蔽位置位的話。在檢測邊沿前 MCU 首先采樣 INT0 引腳上的電平。如果 選擇了邊沿觸發(fā)方式或電平變化觸發(fā)方式,那么持續(xù)時間大于一個時鐘周期的脈沖將觸發(fā)中斷,過短的脈沖則不能保證觸發(fā)中斷。如果選擇低電平觸發(fā)方式,那么低電平必須保持到當前指令執(zhí)行完成

          ISC01 ISC00 說明

          0 0 INT0 為低電平時產(chǎn)生中斷請求

          0 1 INT0 引腳上任意的邏輯電平變化都將引發(fā)中斷

          1 0 INT0 的下降沿產(chǎn)生異步中斷請求

          1 1 INT0 的上升沿產(chǎn)生異步中斷請求
          */

          /*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 標志和 GICR 寄存器相應(yīng)的
          中斷屏蔽位置位的話。若 ISC2 寫 0 , INT2 的下降沿激活中斷。若 ISC2 寫 1 , INT2 的上
          升沿激活中斷。 INT2 的邊沿觸發(fā)方式是異步的。只要 INT2 引腳上產(chǎn)生寬度大于50ns
          (1s=1000ms,1 ms=1000μs,1μs=1000ns )
          所示數(shù)據(jù)的脈沖就會引發(fā)中斷。若選擇了低電平中斷,低電平必須保持到當前指令完成,
          然后才會產(chǎn)生中斷。而且只要將引腳拉低,就會引發(fā)中斷請求。改變 ISC2 時有可能發(fā)生
          中斷。因此建議首先在寄存器 GICR 里清除相應(yīng)的中斷使能位 INT2 ,然后再改變ISC2。
          最后,不要忘記在重新使能中斷之前通過對 GIFR 寄存器的相應(yīng)中斷標志位 INTF2 寫 1’
          使其清零。

          */

          /*
          通用中斷控制寄存器- GICR

          Bit 7 6 5 4 3 2 1 0

          INT1 INT0 INT2 – – – IVSEL IVCE

          * Bit 7 – INT1: 使能外部中斷請求 1

          當 INT1 為 1’ ,而且狀態(tài)寄存器SREG 的 I 標志置位,相應(yīng)的外部引腳中斷就使能了。
          MCU通用控制寄存器– MCUCR的中斷敏感電平控制1位 1/0 (ISC11與ISC10)決定中斷是
          由上升沿、下降沿,還是 INT1 電平觸發(fā)的。只要使能,即使 INT1 引腳被配置為輸出,
          只要引腳電平發(fā)生了相應(yīng)的變化,中斷可將產(chǎn)生。

          * Bit 6 – INT0: 使能外部中斷請求 0

          當 INT0 為 1’ ,而且狀態(tài)寄存器SREG 的 I 標志置位,相應(yīng)的外部引腳中斷就使能了。
          MCU通用控制寄存器– MCUCR的中斷敏感電平控制0位 1/0 (ISC01與ISC00)決定中斷是
          由上升沿、下降沿,還是 INT0 電平觸發(fā)的。只要使能,即使 INT0 引腳被配置為輸出,
          只要引腳電平發(fā)生了相應(yīng)的變化,中斷可將產(chǎn)生。

          * Bit 5 – INT2: 使能外部中斷請求 2

          當 INT2 為 1’ ,而且狀態(tài)寄存器SREG 的 I 標志置位,相應(yīng)的外部引腳中斷就使能了。
          MCU通用控制寄存器– MCUCR 的中斷敏感電平控制2位 1/0 (ISC2與ISC2)決定中斷是由
          上升沿、下降沿,還是 INT2 電平觸發(fā)的。只要使能,即使 INT2 引腳被配置為輸出,只
          要引腳電平發(fā)生了相應(yīng)的變化,中斷可將產(chǎn)生


          */
          /*
          通用中斷標志寄存器- GIFR

          Bit 7 6 5 4 3 2 1 0

          INTF1 INTF0 INTF2 – – – – –

          * Bit 7 – INTF1: 外部中斷標志 1

          INT1引腳電平發(fā)生跳變時觸發(fā)中斷請求,并置位相應(yīng)的中斷標志INTF1。如果SREG 的位
          I以及GICR寄存器相應(yīng)的中斷使能位INT1為”1” ,MCU即跳轉(zhuǎn)到相應(yīng)的中斷向量。進入中
          斷服務(wù)程序之后該標志自動清零。此外,標志位也可以通過寫入 ”0” 來清零。

          * Bit 6 – INTF0: 外部中斷標志 0

          INT0引腳電平發(fā)生跳變時觸發(fā)中斷請求,并置位相應(yīng)的中斷標志INTF0。如果SREG 的位
          I以及GICR寄存器相應(yīng)的中斷使能位INT0為”1” ,MCU即跳轉(zhuǎn)到相應(yīng)的中斷向量。進入中
          斷服務(wù)程序之后該標志自動清零。此外,標志位也可以通過寫入 ”0” 來清零。

          * Bit 5 – INTF2: 外部中斷標志 2

          INT2引腳電平發(fā)生跳變時觸發(fā)中斷請求,并置位相應(yīng)的中斷標志INTF2。如果SREG 的位
          I以及GICR寄存器相應(yīng)的中斷使能位INT2為”1” ,MCU即跳轉(zhuǎn)到相應(yīng)的中斷向量。進入中
          斷服務(wù)程序之后該標志自動清零。此外,標志位也可以通過寫入 ”0” 來清零。注意,當
          INT2中斷禁用進入某些休眠模式時,該引腳的輸入緩沖將禁用。這會導(dǎo)致INTF2標志設(shè)置
          信號的邏輯變化

          */
          //外部中斷0向量端口
          #pragma interrupt_handler INTER_0:iv_INT0
          //外部中斷1向量端口
          #pragma interrupt_handler INTER_1:iv_INT1
          //外部中斷2向量端口
          #pragma interrupt_handler INTER_2:iv_INT2

          void INTER_init_0(unsigned char a)//a取值0-3
          {
          switch(a)
          {
          case 0:MCUCR&=~(1<case 1:MCUCR&=~(1<case 2:MCUCR|=1<case 3:MCUCR|=1<default : MCUCR|=1<}
          GICR|=(1<GIFR&=~(1<SREG|=0x80;//使能全局中斷
          }
          void INTER_init_1(unsigned char a)//a取值0-3
          {
          switch(a)
          {
          case 0:MCUCR&=~(1<case 1:MCUCR&=~(1<case 2:MCUCR|=1<case 3:MCUCR|=(1<default : MCUCR|=1<}
          GICR|=(1<GIFR&=~(1<SREG|=0x80;//使能全局中斷

          }
          void INTER_init_2(unsigned char a)
          {
          if(a)
          MCUCSR|=(1<else
          MCUCSR&=~(1<

          GICR|=(1<GIFR&=~(1<SREG|=0x80;//使能全局中斷
          }
          void INTER_0(void)
          {

          //add your code here!

          }
          void INTER_1(void)
          {

          //add your code here!

          }
          void INTER_2(void)
          {

          //add your code here!

          }



          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();