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

          新聞中心

          第8課 單片機中斷

          作者: 時間:2016-12-01 來源:網(wǎng)絡(luò) 收藏
          這15寄存器中,根據(jù)前面講的51單片機內(nèi)部四大功能模塊又可分為四大部分:
          I/O口相關(guān):P1、P2、 P3、 P4
          中斷相關(guān):IP、 IE
          定時器相關(guān):TMOD、 TCON、 TL0、TH0、TL1、TH1
          串口通信相關(guān):SCON、 PCON、 SBUF
          需要注意的是,在這四大部分中,除I/O口操作相關(guān)的P1、P2、P3、P4相對獨立外,其它11個寄存器使用時通常會相互結(jié)合使用,也就是說中斷、定時器和串口通信三者通常會結(jié)合起來用,如外部中斷時,設(shè)置邊沿觸發(fā)還是電平觸發(fā)需設(shè)置TCON寄存器中的TR0和TR1位,使用定時器時又可能用到中斷,而串口通信時設(shè)置波特率又直接跟定時器相關(guān)。
          這節(jié)里因為我們主要介紹外部中斷0,所以跟外部中斷相關(guān)的寄存器就只有IE、IP、TCON三個,而對于初學(xué)都來說,IP寄存器(中斷優(yōu)先寄存器)一般用不到,所里這里只介紹IE(中斷允許寄存器)和TCON(定時器控制寄存器)。
          (1)IE中斷允許寄存器
          EA:EA=0時,所有中斷禁止(即不產(chǎn)生中斷);EA=1時,各中斷的產(chǎn)生由個別的允許位決定
          ET2:定時2溢出中斷允許(8052用1允許, 0禁止)
          ES:串行口中斷允許(1允許, 0禁止)
          ET1):定時1中斷允許(1允許, 0禁止)
          EX1:外中斷INT1中斷允許(1允許, 0禁止)
          ET0:定時器0中斷允許(1允許, 0禁止)
          EX0:外部中斷INT0的中斷允許(1允許, 0禁止)
          (2)TCON定時器控制寄存器
          TF1:定時器T1溢出標(biāo)志,可由程序查詢和清零,TF1也是中斷請求源,當(dāng)CPU響應(yīng)T1中斷時由硬件清零。
          TF0:定時器T0溢出標(biāo)志,可由程序查詢和清零,TF0也是中斷請求源,當(dāng)CPU響應(yīng)T0中斷時由硬件清零。
          TR1:T1充許計數(shù)控制位,為1時充許T1計數(shù)(定時)。
          TR0:T0充許計數(shù)控制位,為1時充許T0計數(shù)(定時)。
          IE1:外部中斷1請示源(INT1,P3.3)標(biāo)志。IE1=1,外部中斷1正在向CPU請求中斷,當(dāng)CPU響應(yīng)該中斷時由硬件清“0”IE1(邊沿觸發(fā)方式)。
          IT1:外部中斷源1觸發(fā)方式控制位。IT1=0,外部中斷1程控為電平觸發(fā)方式,當(dāng)INT1(P3.3)輸入低電平時,置位IE1。此位為1設(shè)置為電平觸發(fā),為0設(shè)置為下降沿觸發(fā)。
          IE0:外部中斷0請示源(INT0,P3.2)標(biāo)志。IE0=1,外部中斷1正在向CPU請求中斷,當(dāng)CPU響應(yīng)該中斷時由硬件清“0”IE0(邊沿觸發(fā)方式)。
          IT0:外部中斷源0觸發(fā)方式控制位。IT0=0,外部中斷1程控為電平觸發(fā)方式,當(dāng)INT0(P3.2)輸入低電平時,置位IE0。此位為1設(shè)置為電平觸發(fā),為0設(shè)置為下降沿觸發(fā)。
          四、外部中斷程序舉例
          明白了寄存器后,下面我以外部中斷0為例寫一個程序,程序的功能為:在主程序里L(fēng)1燈常亮,當(dāng)外部腳P32檢測到有下降沿時,L1燈熄滅。
          我們先來分析下該程序的書寫思路。首先在主程序里我們應(yīng)該讓L1燈常亮;然后需要對中斷相關(guān)的寄存器進行設(shè)置,主要為打開總中斷、打開外部中斷0,并且還需要設(shè)置外部中斷為低電平觸發(fā)方式;最后我們要寫一個中斷子函數(shù)。
          相應(yīng)的程序如例一所示。
          例一 外部中斷0程序
          #include
          #define uint unsigned int
          #define uchar unsigned char
          sbit D1=P1^0;
          void delay(uint z);
          void main()
          {
          IT0=0;//設(shè)置為0低電平觸發(fā)
          Eaa=1;//開總中斷
          EX0=1;//開外部中斷0
          while(1)
          {
          D1=1;
          }
          }
          void exter0() interrupt 0
          {
          D1=0;
          delay(500);//下降沿觸發(fā)時如果不延時觀察不到再現(xiàn)象
          }
          void delay(uint z)
          {
          uint x,y;
          for(x=z;x>0;x--)
          for(y=110;y>0;y--);
          }
          下載到實驗板現(xiàn)象如圖5所示。
          這里要注意的中斷子函數(shù)的寫法。51中斷子函數(shù)的格式如下:
          void函數(shù)名()interrupt 中斷號
          {
          中斷服務(wù)子程序的內(nèi)容
          }
          中斷函數(shù)不能返回任何值,所以前面用void;后面緊跟函數(shù)名,名字可以隨便取,但不要與C語言中的關(guān)鍵字相同;中斷函數(shù)不帶任何參數(shù),所以函數(shù)名后面的小括號內(nèi)為空;中斷號是指幾個中斷源的序號,每個中斷源的中斷序號如圖6所示。這個中斷號是編譯器識別不同中斷的的唯一,必須書寫正確,否者單片機進不了中斷子程序
          圖6 52單片機的中斷號
          上一頁 1 2 下一頁

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

          評論


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