自在自线亚洲а∨天堂在线-中文字幕一区视频播放-扒开双腿猛进入喷水高潮叫声-欧美日本亚洲一区二区-老熟妇高潮偷拍一区二区-国产精品高清一区二区不卡-午夜色福利视频一区二区三区-亚洲国产成人精品福利在线观看-亚洲欧美成人一区二区在线电影

機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開(kāi)發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開(kāi)發(fā)
培訓(xùn)信息
贊助商
C8051F系列的中斷問(wèn)題
C8051F系列的中斷問(wèn)題
 更新時(shí)間:2008-7-26 20:29:52  點(diǎn)擊數(shù):3
【字體: 字體顏色

> 摘要:為了解決MCS-51系列單片機(jī)只能由IP寄存器設(shè)定兩級(jí)優(yōu)先級(jí)的問(wèn)題,文中給出

了利用軟件對(duì)中斷優(yōu)先級(jí)進(jìn)行擴(kuò)展的方法,同時(shí)給出了高于兩個(gè)優(yōu)先級(jí)的多優(yōu)先級(jí)軟件

擴(kuò)展程序。

>

>     關(guān)鍵詞:?jiǎn)纹瑱C(jī);中斷;優(yōu)先級(jí);寄存器

>

> 1 引言

>

> 所謂中斷是指當(dāng)CPU正在處理某件事情的時(shí)候,外部發(fā)生的某一事件(如一個(gè)電平

的變化,一個(gè)脈沖沿的發(fā)生或定時(shí)器計(jì)數(shù)溢出等)請(qǐng)求CPU迅速去處理,于是CPU

暫時(shí)中止當(dāng)前的工作,轉(zhuǎn)去處理所發(fā)生的事件。中斷服務(wù)處理完該事件以后,再回到原

來(lái)被中止的地方繼續(xù)原來(lái)的工作,這樣的一個(gè)過(guò)程稱之為中斷。以8051為例,中斷

系統(tǒng)含有5個(gè)中斷源,分別是外部中斷0請(qǐng)求(INT0),外部中斷1請(qǐng)求(INT

1),定時(shí)/計(jì)數(shù)器0溢出中斷請(qǐng)求(T0),定時(shí)/計(jì)數(shù)器1溢出中斷請(qǐng)求(T1)

以及串行口中斷請(qǐng)求(Tx/Rx)。既然系統(tǒng)含有5個(gè)中斷源,就有可能出現(xiàn)數(shù)個(gè)中

斷源同時(shí)提出中斷請(qǐng)求的情況,這樣,設(shè)計(jì)人員必須事先根據(jù)它們的輕重緩急來(lái)為每個(gè)

中斷源確定CPU對(duì)其的響應(yīng)順序。然而,對(duì)于中斷優(yōu)先級(jí)寄存器IP來(lái)說(shuō),只可能設(shè)

定兩級(jí)優(yōu)先,即控制位為1時(shí)對(duì)應(yīng)的中斷源為高級(jí)中斷,反之,控制位為0時(shí)對(duì)應(yīng)的為

低級(jí)中斷。這樣就出現(xiàn)一個(gè)問(wèn)題:如果一個(gè)中斷正在執(zhí)行,如何才能讓它響應(yīng)同級(jí)甚至

是低級(jí)中斷請(qǐng)求呢?

>

> 2 中斷多優(yōu)先級(jí)的擴(kuò)展

>

> 根據(jù)8051的結(jié)構(gòu)特點(diǎn),其中斷系統(tǒng)中含有兩個(gè)不可尋址的優(yōu)先級(jí)生效觸發(fā)

器。一個(gè)用于指出CPU是否正在執(zhí)行高優(yōu)先級(jí)的中斷服務(wù)程序,這個(gè)觸發(fā)器為1時(shí),

系統(tǒng)將屏蔽所有的中斷請(qǐng)求;另一個(gè)則指出CPU是否正在執(zhí)行低優(yōu)先級(jí)中斷服務(wù)程

序,該觸發(fā)器為1時(shí),將阻止除高優(yōu)先級(jí)以外的一切中斷請(qǐng)求。由此可見(jiàn),若要響應(yīng)同

級(jí)甚至是低級(jí)中斷請(qǐng)求,必須使得該優(yōu)先級(jí)生效觸發(fā)器清零。但該觸發(fā)器又是不可

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

以達(dá)到此目的。該指令可在CPU?qǐng)?zhí)行該指令時(shí),一方面清除中斷響應(yīng)時(shí)所置位的優(yōu)

先級(jí)生效觸發(fā)器,另一方面可從當(dāng)前棧頂彈出斷點(diǎn)地址送入程序計(jì)數(shù)PC,從而返回

主程序。

>

> 3 軟件擴(kuò)展方法

>

> 3.1 高級(jí)中斷源響應(yīng)低級(jí)中斷源的軟件設(shè)計(jì)

>

> 現(xiàn)以當(dāng)前IE=84H(開(kāi)放外部中斷1及總控制位),IP=04H設(shè)定INT

1為高優(yōu)先級(jí)正在執(zhí)行外部中斷1服務(wù)子程序?yàn)槔齺?lái)進(jìn)行說(shuō)明。如欲響應(yīng)串行口中

斷,也就是要實(shí)現(xiàn)高級(jí)中斷源響應(yīng)低級(jí)中斷源,設(shè)計(jì)時(shí)可加入如下代碼而無(wú)須改變IP

寄存器的內(nèi)容:

>

> PUSH IE ;IE內(nèi)容入棧保護(hù)

>

> MOV IE , #10010000B ;開(kāi)放串行口中斷

>

> CALL PP ;繼續(xù)執(zhí)行原中斷子程序,但可

>

> 隨時(shí)響應(yīng)串行口中斷請(qǐng)求

>

> ...

>

> POP IE ;恢復(fù)原IE內(nèi)容

>

> RETI

>

> PP: RETI

>

> 3.2 同級(jí)中斷源之間的響應(yīng)

>

> 上述代碼體現(xiàn)了高級(jí)中斷源(INT1)響應(yīng)低級(jí)中斷源(串行口)的軟件實(shí)現(xiàn)方

法。但是, 8051系統(tǒng)共含有5個(gè)中斷源,因此必須解決同優(yōu)先級(jí)中斷之間的嵌套

問(wèn)題,具體源程序如下:

>

> 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 ;開(kāi)放所有中斷

>

> MOV IP,#03H ;設(shè)定INT0、T0為高優(yōu)先級(jí)

>

> SJMP $

>

> X0: PUSH DPL

>

> PUSH DPH

>

> MOV DPTR,#X0RL

>

> PUSH DPL

>

> PUSH DPH

>

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

>

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

>

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

>

> ·

>

> ·

>

> ·

>

> POP DPH

>

> POP DPL

>

> RETI

>

> T0: PUSH DPL

>

> PUSH DPH

>

> MOV DPTR,#T0RL

>

> PUSH DPL

>

> PUSH DPH

>

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

>

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

>

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

>

> ·

>

> ·

>

> ·

>

> POP DPH

>

> POP DPL

>

> RETI

>

> X1: PUSH DPL

>

> PUSH DPH

>

> MOV DPTR,#X1RL

>

> PUSH DPL

>

> PUSH DPH

>

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

>

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

>

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

>

> ·

>

> ·

>

> ·

>

> POP DPH

>

> POP DPL

>

> RETI

>

> T1: PUSH DPL

>

> PUSH DPH

>

> MOV DPTR,#T1RL

>

> PUSH DPL

>

> PUSH DPH

>

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

>

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

>

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

>

> ·

>

> ·

>

> ·

>

> POP DPH

>

> POP DPL

>

> RETI

>

> SS: PUSH DPL

>

> PUSH DPH

>

> MOV DPTR,#SSRL

>

> PUSH DPL

>

> PUSH DPH

>

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

>

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

>

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

>

> ·

>

> ·

>

> ·

>

> POP DPH

>

> POP DPL

>

> RETI

>

> 上述程序利用IP寄存器給出了兩級(jí)優(yōu)先級(jí),其中INT0、T0為高優(yōu)先級(jí),IN

T1、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à)還是值得的

>

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

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

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1