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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 關(guān)于單片機(jī)中斷多優(yōu)先級(jí)的軟件擴(kuò)展方法

          關(guān)于單片機(jī)中斷多優(yōu)先級(jí)的軟件擴(kuò)展方法

          作者: 時(shí)間:2013-03-14 來(lái)源:網(wǎng)絡(luò) 收藏

           ?。校希?DPH

           ?。校希?DPL

           ?。遥牛裕?P> ?。裕保?PUSH DPL

           ?。校眨樱?DPH

            MOV DPTR,#T1RL

            PUSH DPL

           ?。校眨樱?DPH

           ?。遥牛裕?;(PC)=T1RL,清"高優(yōu)先級(jí)生效"

            觸發(fā)器,此時(shí)可響應(yīng)其它中斷請(qǐng)求

            T1RL: · ;T1子程序的真實(shí)入口地址

            ·

            ·

            ·

           ?。校希?DPH

           ?。校希?DPL

            RETI

           ?。樱樱?PUSH DPL

            PUSH DPH

           ?。停希?DPTR,#SSRL

           ?。校眨樱?DPL

           ?。校眨樱?DPH

            RETI ;(PC)=SSRL,清"高優(yōu)先級(jí)生效"

            觸發(fā)器,此時(shí)可響應(yīng)其它中斷請(qǐng)求

           ?。樱樱遥蹋?· ;串行口子程序的真實(shí)入口地址

            ·

            ·

            ·

           ?。校希?DPH

           ?。校希?DPL

           ?。遥牛裕?P>  上述程序利用IP寄存器給出了兩級(jí)優(yōu)先級(jí),其中INT0、T0為高優(yōu)先級(jí),INT1、T1串行口為低優(yōu)先級(jí)。為使某中斷能響應(yīng)同級(jí)甚至低級(jí)中斷,只要在中斷服務(wù)子程序中用RETI指令清除相應(yīng)的不可尋址的“優(yōu)先級(jí)生效”觸發(fā)器即可。程序一開(kāi)始的兩條PUSH指令的作用是對(duì)原始數(shù)據(jù)進(jìn)行入棧保護(hù)(如此時(shí)DPTR中的數(shù)據(jù)不需保留,則這兩條壓棧指令也可不要,相應(yīng)的彈棧指令也可不要),然后將其真實(shí)子程序入口地址入棧,并經(jīng)RETI出棧后彈給PC指針,以便在執(zhí)行完RETI后正確執(zhí)行真實(shí)子程序。當(dāng)該中斷服務(wù)子程序執(zhí)行完畢后,RETI將返回主程序斷點(diǎn)處以繼續(xù)執(zhí)行原來(lái)程序。

            4 結(jié)束語(yǔ)

            本文所闡述的多優(yōu)先級(jí)擴(kuò)展方法是純軟件方法,該方法只需在程序中加入為數(shù)不多的相應(yīng)代碼,便可進(jìn)行各種中斷嵌套(如同優(yōu)先級(jí)響應(yīng)或高優(yōu)先級(jí)響應(yīng)低優(yōu)先級(jí)等)。此方法的代價(jià)是要花費(fèi)更多的中斷響應(yīng)時(shí)間,但相對(duì)于添加硬件擴(kuò)展的方法而言,這點(diǎn)代價(jià)還是值得的。


          上一頁(yè) 1 2 3 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(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); })();