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

          新聞中心

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

          嵌入式學(xué)習(xí)筆記9——51單片機(jī)之中斷外部中斷

          作者: 時(shí)間:2016-11-20 來源:網(wǎng)絡(luò) 收藏
          1. 中斷的原理:

          CPU暫時(shí)中斷當(dāng)前的工作(這叫中斷響應(yīng)),轉(zhuǎn)去處理事件B(這叫中斷服務(wù))。

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

          2. 89C51的中斷系統(tǒng)有5個(gè)中斷源(按優(yōu)先級高低排序?yàn)椋?strong>外部中斷0、計(jì)時(shí)器中斷0、外部中斷1、計(jì)時(shí)器中斷1、串口中斷),2個(gè)優(yōu)先級,可實(shí)現(xiàn)二級中斷嵌套(中斷處理過程又有優(yōu)先級更高的中斷發(fā)生)。高級單片機(jī)中可能有更多的中斷源和更多的優(yōu)先級等。



          3. 89C51單片機(jī)的中斷優(yōu)先級有三個(gè)原則:

          (1)CPU同時(shí)接收到幾個(gè)中斷時(shí),首先響應(yīng)優(yōu)先級別最高的中斷請求。 (2)正在進(jìn)行的中斷過程不能被新的同級或低優(yōu)先級的中斷請求所中斷。 (3)正在進(jìn)行的低優(yōu)先級中斷服務(wù),能被高優(yōu)先級中斷請求所中斷。(為實(shí)現(xiàn)后兩個(gè)原則,系統(tǒng)設(shè)有兩個(gè)不能尋址的優(yōu)先級觸發(fā)器。其中一個(gè)置1,表示正在響應(yīng)高優(yōu)先級的中斷,將阻斷后來所有的中斷請求;另一個(gè)置1,表示正在響應(yīng)低優(yōu)先級中斷,將阻斷后來所有低優(yōu)先級中斷請求。)

          4. CPU對中斷系統(tǒng)所有中斷以及某個(gè)中斷源的開發(fā)和屏蔽是由中斷允許寄存器IE控制的。


          5. 中斷響應(yīng)條件:

          (1)中斷源有中斷請求;(2)此中斷源的中斷允許位為1;(3)CPU開中斷(即EA=1)。

          6. 程序員使用中斷需要做什么?

          (1)使用哪個(gè)中斷(外部中斷,計(jì)時(shí)器中斷,串口中斷等),便確定了響應(yīng)的中斷號;(2)希望觸發(fā)中斷的條件是什么,比如下降沿觸發(fā)還是低電平觸發(fā);(3)中斷之后要干什么(中斷服務(wù)程序要盡量簡短)。

          舉例:a.設(shè)置IE中響應(yīng)的值——EA置1(允許CPU中斷)、打開要使用的中斷;b.設(shè)置TCON中相應(yīng)中斷的觸發(fā)方式(如下圖所示TCON寄存器);c.寫中斷服務(wù)程序(void 函數(shù)名() interrupt 中斷號 using 0~3中的任意值 { 函數(shù)體 },其中0~3中的值表示選擇片內(nèi)四組寄存器中的一組來保存中斷前的現(xiàn)場,通常建議初學(xué)者不寫“using 0~3中的任意值”,因?yàn)槟悴磺宄?nèi)部寄存器的使用情況,不寫的情況下,Keil會自動幫你指定的。)


          7. 外部中斷:

          IT0(TCON.0)決定外部中斷0是低電平有效還是下降沿有效(從高電平變到低電平)。同樣地,IT1(TCON.2)對應(yīng)外部中斷1。



          評論


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