男女午夜激情_www.天堂av.com_亚洲综合小说区_亚洲欧美自拍视频_成年精品_久久www免费人成—看片_激情综合五月天_久久高潮视频_最新国产成人ab网站_国产精品卡一

機電之家資源網
單片機首頁|單片機基礎|單片機應用|單片機開發|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發
培訓信息
贊助商
C8051F系列的中斷問題
C8051F系列的中斷問題
 更新時間:2008-7-26 20:29:52  點擊數:3
【字體: 字體顏色

> 摘要:為了解決MCS-51系列單片機只能由IP寄存器設定兩級優先級的問題,文中給出

了利用軟件對中斷優先級進行擴展的方法,同時給出了高于兩個優先級的多優先級軟件

擴展程序。

>

>     關鍵詞:單片機;中斷;優先級;寄存器

>

> 1 引言

>

> 所謂中斷是指當CPU正在處理某件事情的時候,外部發生的某一事件(如一個電平

的變化,一個脈沖沿的發生或定時器計數溢出等)請求CPU迅速去處理,于是CPU

暫時中止當前的工作,轉去處理所發生的事件。中斷服務處理完該事件以后,再回到原

來被中止的地方繼續原來的工作,這樣的一個過程稱之為中斷。以8051為例,中斷

系統含有5個中斷源,分別是外部中斷0請求(INT0),外部中斷1請求(INT

1),定時/計數器0溢出中斷請求(T0),定時/計數器1溢出中斷請求(T1)

以及串行口中斷請求(Tx/Rx)。既然系統含有5個中斷源,就有可能出現數個中

斷源同時提出中斷請求的情況,這樣,設計人員必須事先根據它們的輕重緩急來為每個

中斷源確定CPU對其的響應順序。然而,對于中斷優先級寄存器IP來說,只可能設

定兩級優先,即控制位為1時對應的中斷源為高級中斷,反之,控制位為0時對應的為

低級中斷。這樣就出現一個問題:如果一個中斷正在執行,如何才能讓它響應同級甚至

是低級中斷請求呢?

>

> 2 中斷多優先級的擴展

>

> 根據8051的結構特點,其中斷系統中含有兩個不可尋址的優先級生效觸發

器。一個用于指出CPU是否正在執行高優先級的中斷服務程序,這個觸發器為1時,

系統將屏蔽所有的中斷請求;另一個則指出CPU是否正在執行低優先級中斷服務程

序,該觸發器為1時,將阻止除高優先級以外的一切中斷請求。由此可見,若要響應同

級甚至是低級中斷請求,必須使得該優先級生效觸發器清零。但該觸發器又是不可

尋址的,所以無法用軟件直接清零。遍歷系統所提供的111條指令,只有RETI可

以達到此目的。該指令可在CPU執行該指令時,一方面清除中斷響應時所置位的

先級生效觸發器,另一方面可從當前棧頂彈出斷點地址送入程序計數PC,從而返回

主程序。

>

> 3 軟件擴展方法

>

> 3.1 高級中斷源響應低級中斷源的軟件設計

>

> 現以當前IE=84H(開放外部中斷1及總控制位),IP=04H設定INT

1為高優先級正在執行外部中斷1服務子程序為例來進行說明。如欲響應串行口中

斷,也就是要實現高級中斷源響應低級中斷源,設計時可加入如下代碼而無須改變IP

寄存器的內容:

>

> PUSH IE ;IE內容入棧保護

>

> MOV IE , #10010000B ;開放串行口中斷

>

> CALL PP ;繼續執行原中斷子程序,但可

>

> 隨時響應串行口中斷請求

>

> ...

>

> POP IE ;恢復原IE內容

>

> RETI

>

> PP: RETI

>

> 3.2 同級中斷源之間的響應

>

> 上述代碼體現了高級中斷源(INT1)響應低級中斷源(串行口)的軟件實現方

法。但是, 8051系統共含有5個中斷源,因此必須解決同優先級中斷之間的嵌套

問題,具體源程序如下:

>

> ORG 0000H

>

> LJMP MAIN

>

> ORG 0003H

>

> LJMP X0 ;INT0入口地址

>

> ORG 000BH

>

> LJMP T0 ;T0入口地址

>

> ORG 0013H

>

> LJMP X1 ;INT1入口地址

>

> ORG 001BH

>

> LJMP T1 ;T1入口地址

>

> ORG 0023H

>

> LJMP SS ;串行口入口地址

>

> MAIN: MOV IE ,#9FH ;開放所有中斷

>

> MOV IP,#03H ;設定INT0、T0為高優先級

>

> SJMP $

>

> X0: PUSH DPL

>

> PUSH DPH

>

> MOV DPTR,#X0RL

>

> PUSH DPL

>

> PUSH DPH

>

> RETI ;(PC)=X0RL,清"高優先級生效"

>

> 觸發器,此時可響應其它中斷請求

>

> X0RL:· ;INT0子程序的真實入口地址

>

> ·

>

> ·

>

> ·

>

> POP DPH

>

> POP DPL

>

> RETI

>

> T0: PUSH DPL

>

> PUSH DPH

>

> MOV DPTR,#T0RL

>

> PUSH DPL

>

> PUSH DPH

>

> RETI ;(PC)=T0RL,清"高優先級生效"

>

> 觸發器,此時可響應其它中斷請求

>

> T0RL: · ;T0子程序的真實入口地址

>

> ·

>

> ·

>

> ·

>

> POP DPH

>

> POP DPL

>

> RETI

>

> X1: PUSH DPL

>

> PUSH DPH

>

> MOV DPTR,#X1RL

>

> PUSH DPL

>

> PUSH DPH

>

> RETI ;(PC)=X1RL,清高優先級生效

>

> 觸發器,此時可響應其它中斷請求

>

> X1RL: · ;INT1子程序的真實入口地址

>

> ·

>

> ·

>

> ·

>

> POP DPH

>

> POP DPL

>

> RETI

>

> T1: PUSH DPL

>

> PUSH DPH

>

> MOV DPTR,#T1RL

>

> PUSH DPL

>

> PUSH DPH

>

> RETI ;(PC)=T1RL,清"高優先級生效"

>

> 觸發器,此時可響應其它中斷請求

>

> T1RL: · ;T1子程序的真實入口地址

>

> ·

>

> ·

>

> ·

>

> POP DPH

>

> POP DPL

>

> RETI

>

> SS: PUSH DPL

>

> PUSH DPH

>

> MOV DPTR,#SSRL

>

> PUSH DPL

>

> PUSH DPH

>

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

>

> 觸發器,此時可響應其它中斷請求

>

> SSRL: · ;串行口子程序的真實入口地址

>

> ·

>

> ·

>

> ·

>

> POP DPH

>

> POP DPL

>

> RETI

>

> 上述程序利用IP寄存器給出了兩級優先級,其中INT0、T0為高優先級,IN

T1、T1串行口為低優先級。為使某中斷能響應同級甚至低級中斷,只要在中斷服務

子程序中用RETI指令清除相應的不可尋址的優先級生效觸發器即可。程序一開

始的兩條PUSH指令的作用是對原始數據進行入棧保護(如此時DPTR中的數據不

需保留,則這兩條壓棧指令也可不要,相應的彈棧指令也可不要),然后將其真實子程

序入口地址入棧,并經RETI出棧后彈給PC指針,以便在執行完RETI后正確執

行真實子程序。當該中斷服務子程序執行完畢后,RETI將返回主程序斷點處以繼續

執行原來程序。

>

> 4 結束語

>

> 本文所闡述的多優先級擴展方法是純軟件方法,該方法只需在程序中加入為數不多的

相應代碼,便可進行各種中斷嵌套(如同優先級響應或高優先級響應低優先級等)。此

方法的代價是要花費更多的中斷響應時間,但相對于添加硬件擴展的方法而言,這點代

價還是值得的

>

  • 上一篇: P89LPC932包含文件
  • 下一篇: 嵌入式RTOS在MSP430單片機上的實現
  • 發表評論   告訴好友   打印此文  收藏此頁  關閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關文章
    網友評論:(只顯示最新5條。)
    關于我們 | 聯系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發消息66821730(技術支持)點擊這里給我發消息66821730(廣告投放) 點擊這里給我發消息41031197(編輯) 點擊這里給我發消息58733127(審核)
    本站提供的機電設備,機電供求等信息由機電企業自行提供,該企業負責信息內容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術支持

    主辦:杭州市高新區(濱江)機電一體化學會
    中國行業電子商務100強網站

    網站經營許可證:浙B2-20080178-1
    主站蜘蛛池模板: 峨眉山市| 咸阳市| 瑞安市| 出国| 岳普湖县| 邯郸市| 格尔木市| 郸城县| 图木舒克市| 文化| 元江| 盐源县| 泾源县| 建阳市| 苍溪县| 孟村| 临沂市| 通江县| 德阳市| 阿勒泰市| 都安| 夹江县| 来安县| 常山县| 孟州市| 兴化市| 托里县| 西峡县| 青河县| 株洲县| 图木舒克市| 公安县| 香港 | 新沂市| 芜湖市| 宁武县| 于都县| 泉州市| 涞水县| 水富县| 山东省|