新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > MCS-51中斷系統(tǒng)中的復(fù)位問(wèn)題

        MCS-51中斷系統(tǒng)中的復(fù)位問(wèn)題

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

          系列單片機(jī)提供了多個(gè)中斷源(8051提供5個(gè),8052提供了6個(gè)中斷源),每個(gè)中斷源可編程兩種級(jí)別的中斷,高級(jí)中斷請(qǐng)求和低級(jí)中斷請(qǐng)求,因此可實(shí)現(xiàn)兩級(jí)中斷服務(wù)嵌套。即使同一級(jí)別的中斷源,在同時(shí)請(qǐng)求中斷時(shí),CPU響應(yīng)也有先后順序的區(qū)別。因此在實(shí)時(shí)系統(tǒng),儀器儀表中使用十分廣泛,的設(shè)計(jì)則是軟件設(shè)計(jì)中的一個(gè)關(guān)鍵點(diǎn),處理不好往往使軟件達(dá)不到設(shè)計(jì)效果。

          下面是筆者在應(yīng)用過(guò)程中曾遇到過(guò)的一個(gè)問(wèn)題。

          我們?cè)O(shè)計(jì)的一臺(tái)電力測(cè)量?jī)x含有鍵盤(pán)和秒時(shí)鐘,鍵盤(pán)中斷采用INT0,秒時(shí)鐘用T0,INT0設(shè)置為高優(yōu)先級(jí)別中斷,T0為低級(jí)別,秒中斷服務(wù)占有約750ms。要求CPU對(duì)鍵盤(pán)具有很高的響應(yīng)速度,而且一旦接收有效的鍵盤(pán)命令,使程序重新從等待處進(jìn)入的測(cè)量狀態(tài),不再回到被鍵盤(pán)打斷的地方。軟件流程如圖1所示。

          最初的鍵盤(pán)服務(wù)程序末尾如下:

          

        MCS-51中斷系統(tǒng)中的復(fù)位問(wèn)題

        MCS-51中斷系統(tǒng)中的復(fù)位問(wèn)題

          在調(diào)試過(guò)程中,常常響應(yīng)鍵盤(pán)中斷后,不能正常進(jìn)入秒中斷,只在WAIT處等待循環(huán),此時(shí)EA=1,TR0=1,TF0=1,可見(jiàn)EA=1,TR0=1,TF0=1不是中斷T0響應(yīng)的充要條件。

          經(jīng)多方查詢(xún)有關(guān)資料發(fā)現(xiàn),系列單片機(jī)的有兩個(gè)不可尋址的優(yōu)先狀態(tài)觸發(fā)器,它們的置位狀態(tài),一個(gè)指示CPU正在執(zhí)行的高優(yōu)先級(jí)中斷服務(wù)程序,另一個(gè)指出正在執(zhí)行低優(yōu)先級(jí)中斷服務(wù),這兩個(gè)觸發(fā)器的置位狀態(tài)分別屏蔽所有中斷申請(qǐng)和同一優(yōu)先級(jí)的其它中斷請(qǐng)求。

          秒中斷服務(wù)需要750ms,當(dāng)按下鍵盤(pán)時(shí)有75%的機(jī)率正在執(zhí)行秒中斷服務(wù)程序,指示執(zhí)行低優(yōu)先級(jí)中斷服務(wù)的觸發(fā)器已置位。響應(yīng)鍵盤(pán)中斷后,指示執(zhí)行高優(yōu)先級(jí)中斷服務(wù)的觸發(fā)器置位,而整個(gè)過(guò)程中只執(zhí)行了一次RETI指令,指示CPU正在執(zhí)行T0中斷的觸發(fā)器沒(méi)有復(fù)位,即使TR0=1,TF=1,EA=1,CPU仍認(rèn)為程序已執(zhí)行秒中斷服務(wù),因而不能再次進(jìn)入秒中斷服務(wù),為此,筆者將原程序改為

          

        MCS-51中斷系統(tǒng)中的復(fù)位問(wèn)題

          匯編裝入系統(tǒng)后,一切正常。



        評(píng)論


        相關(guān)推薦

        技術(shù)專(zhuān)區(qū)

        關(guān)閉
        主站蜘蛛池模板: 门源| 肃宁县| 姚安县| 海林市| 安新县| 乐昌市| 大连市| 珠海市| 华坪县| 昭苏县| 建德市| 山东省| 亳州市| 新蔡县| 岱山县| 昌图县| 阿拉善右旗| 永德县| 乌拉特前旗| 陆川县| 仪征市| 霍州市| 聂荣县| 永德县| 泰顺县| 衡水市| 潮安县| 肥乡县| 治县。| 嵊州市| 仪陇县| 绍兴市| 汕尾市| 墨竹工卡县| 庐江县| 香格里拉县| 阜宁县| 临江市| 田东县| 龙山县| 渝中区|