• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > MCS-51中斷系統中的復位問題

    MCS-51中斷系統中的復位問題

    作者: 時間:2011-10-12 來源:網絡 收藏

      系列單片機提供了多個中斷源(8051提供5個,8052提供了6個中斷源),每個中斷源可編程兩種級別的中斷,高級中斷請求和低級中斷請求,因此可實現兩級中斷服務嵌套。即使同一級別的中斷源,在同時請求中斷時,CPU響應也有先后順序的區別。因此在實時系統,儀器儀表中使用十分廣泛,的設計則是軟件設計中的一個關鍵點,處理不好往往使軟件達不到設計效果。

      下面是筆者在應用過程中曾遇到過的一個問題。

      我們設計的一臺電力測量儀含有鍵盤和秒時鐘,鍵盤中斷采用INT0,秒時鐘用T0,INT0設置為高優先級別中斷,T0為低級別,秒中斷服務占有約750ms。要求CPU對鍵盤具有很高的響應速度,而且一旦接收有效的鍵盤命令,使程序重新從等待處進入的測量狀態,不再回到被鍵盤打斷的地方。軟件流程如圖1所示。

      最初的鍵盤服務程序末尾如下:

      

    MCS-51中斷系統中的復位問題

    MCS-51中斷系統中的復位問題

      在調試過程中,常常響應鍵盤中斷后,不能正常進入秒中斷,只在WAIT處等待循環,此時EA=1,TR0=1,TF0=1,可見EA=1,TR0=1,TF0=1不是中斷T0響應的充要條件。

      經多方查詢有關資料發現,系列單片機的有兩個不可尋址的優先狀態觸發器,它們的置位狀態,一個指示CPU正在執行的高優先級中斷服務程序,另一個指出正在執行低優先級中斷服務,這兩個觸發器的置位狀態分別屏蔽所有中斷申請和同一優先級的其它中斷請求。

      秒中斷服務需要750ms,當按下鍵盤時有75%的機率正在執行秒中斷服務程序,指示執行低優先級中斷服務的觸發器已置位。響應鍵盤中斷后,指示執行高優先級中斷服務的觸發器置位,而整個過程中只執行了一次RETI指令,指示CPU正在執行T0中斷的觸發器沒有復位,即使TR0=1,TF=1,EA=1,CPU仍認為程序已執行秒中斷服務,因而不能再次進入秒中斷服務,為此,筆者將原程序改為

      

    MCS-51中斷系統中的復位問題

      匯編裝入系統后,一切正常。



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 孟津县| 屯门区| 墨脱县| 屯昌县| 阳泉市| 英超| 芒康县| 榆社县| 五莲县| 新巴尔虎左旗| 基隆市| 喀喇沁旗| 公主岭市| 云安县| 津南区| 库尔勒市| 北海市| 石台县| 乌拉特后旗| 满洲里市| 锦屏县| 临海市| 曲松县| 洪泽县| 蒲城县| 龙里县| 怀宁县| 怀远县| 永春县| 丁青县| 英超| 长寿区| 嘉峪关市| 开平市| 大同市| 马公市| 汝城县| 玉树县| 沙雅县| 鄂尔多斯市| 清镇市|