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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 51單片機擴展中斷的四種方法

          51單片機擴展中斷的四種方法

          作者: 時間:2013-12-02 來源:網(wǎng)絡 收藏

          MCS—51系列單片機內部只有兩個外部輸入端,當外部多于兩個時

          ,就必須進行擴展,下面介紹兩種簡單的擴展方法:

          一、采用硬件請求和軟件查詢的方法:

          這種方法是:把各個通過硬件“或非(高有效,如CD4002)”(與,低有效)門引入到單片機外部中斷源輸入

          端(INT0或INT1),同時再把外部中斷源送到單片機的某個輸入輸出端口,這

          樣當外部中斷時,通過“或非”(與)門引起單片機中斷,在中斷服務程序中再通

          過軟件查詢,進而轉相應的中斷服務程序。顯然,這種方法的中斷優(yōu)先級取決于

          軟件查詢的次序。其硬件連接和軟件編程如下:

          Void zhongduan (void) interrupt 0 using 3 //中斷函數(shù)

          {

          EX0=0;//關中斷

          If(P0_0=1) { *****}//中斷查詢

          If(P0_1=1) { *****}//中斷查詢

          If(P0_2=1) { *****}//中斷查詢

          EX0=1;開中斷

          }

          二、用普通二極管構成中斷選擇

          51單片機擴展中斷的四種方法

          擴展的8個外部中斷源均通過二極管向I N T(x=0或I)請求中斷。當某個外部中斷源請求中斷服務時輸出低電平,單片機的I NT 經二極管接地電平,單片機滿足響應外部中斷(I N T)請求條件,響應中斷,程序立即轉向I NT 對應的中斷入口地址處開始執(zhí)行中斷服務程序,通過軟件查詢PI.0~P1.7口外中斷源的狀態(tài),以識別提出請求的外擴中斷源,并轉向中斷服務程序為其服務,其查詢順序即為外部源的中斷優(yōu)先級順序。在圖中,是選用PI.0~PI.7作為外擴中斷源請求的狀態(tài)信息輸入端口。

          有點類似第一種方法。

          三、用定時器/計數(shù)器作外部中斷

          單片機的定時器/計數(shù)器是一個加一計數(shù)器,每當計數(shù)輸入端有一個“1—0”的負

          跳變時,計數(shù)器加一,當加一計數(shù)器溢出時,就向CPU發(fā)出中斷,利用這個特性

          的方法是:首先把定時器/計數(shù)器設置成計數(shù)方式,并預置滿值,把

          外部中斷源輸入到P3口第4引腳或第5引腳(計數(shù)器輸入端),這樣就可以利用

          定時器/計數(shù)器作為單片機外部中斷了。注意這種方法的中斷服務的入口地址應

          在000BH或001BH。

          四、用專用中斷擴展芯片8259A

          8259A是可編程中斷控制接口,單片機控制八級中斷。在系統(tǒng)中還可采用級聯(lián)方式,一個主片可級聯(lián)8個從片,構成64級中斷處理系統(tǒng)。

          這樣在程序小于8K的情況,就可以用一片單片機實現(xiàn)了,而不需要用兩片單片機控制,還要進行單片機點對點通訊。

          塵埃粒子計數(shù)器相關文章:塵埃粒子計數(shù)器原理


          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();