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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > PIC單片機的中斷問答

          PIC單片機的中斷問答

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

          與51或者其他系列的單片機相比,的中斷機制有其特殊之處,針對我們一些初學者存在的一些問題和疑惑,我在此做一個個人總結(jié),不當?shù)牡胤剑堈居褌冎刚?/P>

          先摘引三個對PIC中斷理解的回帖,然后我再對中斷活動的過程、應該注意的事項、及一個疑惑進行較詳細的總結(jié)和解釋。

          ---------------

          johnfrank:關于pic中斷有些不明白的地方

          借用大蝦的程序;

          ;********************中斷服務代碼

          btfssINTCON,T0IE;判斷是否為T0中斷

          gotoother_int

          btfssINTCON,T0IF;it’sthetimeofT0int

          gotoother_int

          bcfINTCON,T0IF;是T0中斷,清除中斷標志

          movlw0x10;微秒的高位字節(jié)加上定時時間256x16分頻=4096=0x1000的高位(0x10)

          addwfus+1

          gotoend_int

          other_int;可添加其他中斷服務代碼

          nop;otherisrcodecanbeadded

          ;**********************************

          end_int;恢復現(xiàn)場

          =================

          假如又有新的中斷正好在這段程序中間產(chǎn)生

          btfssINTCON,T0IF

          gotoother_int

          bcfINTCON,T0IF

          程序豈不是要出錯跑飛了

          johnfrank:

          謝謝你的關注。

          我講一下自己的理解,權(quán)做回答,不當之處,還請站友們指點。

          pic中檔單片機系列沒有“硬件中斷優(yōu)先級別”(請允許我這樣說),含義是指:當內(nèi)核正在處理當前的中斷服務A時,在這個期間里,其他任何中斷的產(chǎn)生,只能使其標志位xxIF置1,不能剝奪當前中斷服務對CPU的占用權(quán)(反應在PC指針不能被新的中斷改變指向),必須等到當前中斷服務處理A完畢,然后,根據(jù)gotoother_int語句的轉(zhuǎn)向,依次判斷。若新發(fā)生的中斷處理代碼在中斷服務A之后(前、后指代碼在ROM中地址順序,越大越后),則進行新發(fā)生的中斷處理;若恰好新發(fā)生的中斷服務代碼在剛被處理完畢的中斷服務A代碼之前,則將不予理會,(即程序指針PC不會在中斷處理代碼空間中又返回到0004H的入口),等到執(zhí)行到retfie后返回主程序,然后再次進入中斷入口0004H...

          之所以說其無“硬件中斷優(yōu)先級別”是與“軟件中斷優(yōu)先級別”對應的,通過中斷服務代碼對中斷標志和IE的檢測的先后,可設立優(yōu)先級。


          上一頁 1 2 3 下一頁

          評論


          相關推薦

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