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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 關(guān)于單片機(jī)中斷詳解

          關(guān)于單片機(jī)中斷詳解

          作者: 時(shí)間:2016-12-01 來源:網(wǎng)絡(luò) 收藏



          另外中斷的處理函數(shù)是這樣聲明的


          void abc() interrupt X using n
          {
          處理語句;
          }


          我們看到,只是普通的函數(shù) 加上了 interrupt X using Y 了而已,X 的取值是有規(guī)定的:


          如果是外部中斷0的中斷處理函數(shù),則X為0 即void abc() interrupt 0 using n


          若是定時(shí)器0的中斷處理函數(shù),則 X 為1


          若是外部中斷1的中斷處理函數(shù),則 X 為2


          若是定時(shí)器1的中斷處理函數(shù),則 X 為3


          若是串口中斷的中斷處理函數(shù),則 X 為4

          n 是中斷號(hào),取值范圍為 0 - 31




          關(guān)于中斷的學(xué)習(xí),也到此告一段落了,當(dāng)然還有一些問題沒解決.......

          Q1:為什么count==40的時(shí)候數(shù)碼管也不能閃爍???

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

          /*
          實(shí)現(xiàn)目的:
          讓LED燈以1000ms(即1s)產(chǎn)生流水燈效果,并用定時(shí)器0讓數(shù)碼管以500ms從0~F閃爍
          */
          #include
          #include
          #define uint unsigned int
          #define uchar unsigned char
          sbit d1=P2^1;
          uchar weixuan=0x00;//位選全開
          uchar code table[]={
          0x3f,0x06,0x5b,0x4f,
          0x66,0x6d,0x7d,0x07,
          0x7f,0x6f,0x77,0x7c,
          0x39,0x5e,0x79,0x71};//段選
          uchar temp,count,num;
          void delay(uint z)
          {
          uint x,y;
          for(x=z;x>0;x--)
          {
          for(y=0;y<113;y++)
          {
          }
          }
          }
          void main()
          {
          count=0;
          num=0;
          P1=weixuan;
          P0=table[num];
          temp=0xfe;
          P2=temp;
          TMOD=0x01;
          TH0=(65535-50000)/256;
          TL0=(65535-50000)%256;
          EA=1;
          ET0=1;
          TR0=1;
          while(1)
          {
          delay(1000);
          temp=_crol_(temp,1);
          P2=temp;
          /*
          if(count==10)
          {
          count=0;
          num++;
          if(num==16)
          {
          num=0;
          }
          P0=table[num];
          } */
          }
          }
          void time0() interrupt 1
          {
          TH0=(65535-50000)/256;
          TL0=(65535-50000)%256;
          count++;
          if(count==10)
          {
          count=0;
          num++;
          if(num==16)
          {
          num=0;
          }
          P0=table[num];
          }
          }


          /*
          PS:我們不能把數(shù)碼管500ms閃爍時(shí)間是否到達(dá)的語句寫在主程序中,
          若寫在主程序中,有可能發(fā)生如下錯(cuò)誤情況:當(dāng)主程序在LED燈顯示語句當(dāng)中時(shí),
          此時(shí)恰好定時(shí)器0進(jìn)入中斷并且count剛好加到了10,當(dāng)定時(shí)器0中斷再次進(jìn)入時(shí),
          主程序仍未退出LED流水燈的顯示程序,那么此時(shí)count的值便變成了11,
          這樣的話,count==10這個(gè)點(diǎn)永遠(yuǎn)檢測不到,因此數(shù)碼管閃爍失去了控制


          在調(diào)試代碼當(dāng)中發(fā)現(xiàn)delay(uint z)函數(shù)與中斷是同時(shí)執(zhí)行的。。。
          */


          上一頁 1 2 下一頁

          關(guān)鍵詞: 單片機(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); })();