新聞中心

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

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

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

          POP DPH

          POP DPL

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

         ?。校眨樱?DPH

          MOV DPTR,#T1RL

          PUSH DPL

          PUSH DPH

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

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

         ?。裕保遥蹋?· ;T1子程序的真實入口地址

          ·

          ·

          ·

          POP DPH

         ?。校希?DPL

         ?。遥牛裕?P>  SS: PUSH DPL

         ?。校眨樱?DPH

         ?。停希?DPTR,#SSRL

         ?。校眨樱?DPL

         ?。校眨樱?DPH

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

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

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

          ·

          ·

          ·

          POP DPH

          POP DPL

          RETI

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

          4 結(jié)束語

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


        上一頁 1 2 3 下一頁

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 衢州市| 宝应县| 民勤县| 柳江县| 永德县| 会昌县| 长顺县| 吉木乃县| 原平市| 阳信县| 开远市| 长子县| 丰原市| 手游| 博湖县| 红河县| 阳高县| 广河县| 兴安盟| 阿巴嘎旗| 巴林右旗| 沧州市| 子长县| 镇雄县| 彭州市| 青阳县| 古交市| 巴马| 宁远县| 绥滨县| 油尖旺区| 麻城市| 林芝县| 云阳县| 山阴县| 泰顺县| 陆丰市| 西畴县| 栖霞市| 四会市| 饶阳县|