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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 嵌入式學(xué)習(xí)筆記20——AVR單片機(jī)之中斷

          嵌入式學(xué)習(xí)筆記20——AVR單片機(jī)之中斷

          作者: 時間:2016-11-20 來源:網(wǎng)絡(luò) 收藏
          1.ATmega16單片機(jī)具有21個中斷源。每個中斷源都有一個獨(dú)立的中斷向量作為中斷服務(wù)程序的入口地址,而且所有的中斷源都有自己獨(dú)立的使能位。如果全局中斷I和相應(yīng)的中斷使能位都置位,則在中斷標(biāo)志位置位時將執(zhí)行中斷服務(wù)程序。

          2.一個中斷產(chǎn)生后,全局中斷使能位I將被清零,后的中斷被屏蔽。用戶可以在中斷服務(wù)程序里面對I置位從而開全局中斷,在中斷返回后全局中斷I將重新置位。

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

          3.ATmega16單片機(jī)中斷向量表介紹:


          4.AVR單片機(jī)外部中斷

          • ATmega16單片機(jī)具有3個外部中斷,分別是INT0,INT1,INT2,這3個外部中斷都是有單片機(jī)的引腳觸發(fā)的。
          • 需要注意的是,如果允許外部中斷的話,即使INT0,INT1,INT2這3個引腳都設(shè)置為輸出方式,外部中斷也會觸發(fā)。
          • INT0,INT1外部中斷可以選擇的觸發(fā)方式有上升沿觸發(fā)、下降沿觸發(fā)以及低電平觸發(fā);INT2只有跳變沿觸發(fā)(即上升沿觸發(fā)或下降沿觸發(fā)),沒有電平觸發(fā)。
          • 使用外部中斷涉及到的寄存器有:MCU控制寄存器MCUCR,MCU控制欲狀態(tài)寄存器MCUCSR,通用中斷控制寄存器GICR,通用中斷狀態(tài)寄存器GIFR。



          ISC11和ISC10——外部中斷1,ISC01和ISC00——外部中斷0


          只需關(guān)心ISC2位,為零時下降沿觸發(fā)中斷;為1時上升沿觸發(fā)中斷。


          第7位——全中斷使能位

          各單獨(dú)中斷源中斷使能

          使用外部中斷函數(shù)可以不用關(guān)心此寄存器,也可以軟件查詢。

          5.

          6.外部中斷的使用步驟

          • 設(shè)置外部中斷觸發(fā)方式(寄存器MCUCR——INT0、INT1,MCUCSR——INT2)
          • 使能外部中斷(寄存器GICR)
          • 設(shè)置中斷管腳(是否需要上拉電阻,若是,則設(shè)置INT0、INT1、INT2所在IO口引腳為輸出且上拉電阻)
          • 打開全局中斷(寄存器SREG)
          • 選擇中斷號,寫中斷服務(wù)程序。


          關(guān)鍵詞: AVR單片機(jī)中

          評論


          技術(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); })();