国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

電子工程網(wǎng)

標(biāo)題: 單片機(jī)中斷多優(yōu)先級的軟件擴(kuò)展方法 [打印本頁]

作者: conniede    時間: 2010-9-25 20:51
標(biāo)題: 單片機(jī)中斷多優(yōu)先級的軟件擴(kuò)展方法
1 引言

所謂中斷是指當(dāng)CPU正在處理某件事情的時候,外部發(fā)生的某一事件(如一個電平的變化,一個脈沖沿的發(fā)生或定時器計數(shù)溢出等)請求CPU迅速去處理,于是CPU暫時中止當(dāng)前的工作,轉(zhuǎn)去處理所發(fā)生的事件。中斷服務(wù)處理完該事件以后,再回到原來被中止的地方繼續(xù)原來的工作,這樣的一個過程稱之為中斷。以8051為例,中斷系統(tǒng)含有5個中斷源,分別是外部中斷0請求(INT0),外部中斷1請求(INT1),定時/計數(shù)器0溢出中斷請求(T0),定時/計數(shù)器1溢出中斷請求(T1)以及串行口中斷請求(Tx/Rx)。既然系統(tǒng)含有5個中斷源,就有可能出現(xiàn)數(shù)個中斷源同時提出中斷請求的情況,這樣,設(shè)計人員必須事先根據(jù)它們的輕重緩急來為每個中斷源確定CPU對其的響應(yīng)順序。然而,對于中斷優(yōu)先級寄存器IP來說,只可能設(shè)定兩級優(yōu)先,即控制位為1時對應(yīng)的中斷源為高級中斷,反之,控制位為0時對應(yīng)的為低級中斷。這樣就出現(xiàn)一個問題:如果一個中斷正在執(zhí)行,如何才能讓它響應(yīng)同級甚至是低級中斷請求呢?

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

根據(jù)8051的結(jié)構(gòu)特點,其中斷系統(tǒng)中含有兩個不可尋址的“優(yōu)先級生效”觸發(fā)器。一個用于指出CPU是否正在執(zhí)行高優(yōu)先級的中斷服務(wù)程序,這個觸發(fā)器為1時,系統(tǒng)將屏蔽所有的中斷請求;另一個則指出CPU是否正在執(zhí)行低優(yōu)先級中斷服務(wù)程序,該觸發(fā)器為1時,將阻止除高優(yōu)先級以外的一切中斷請求。由此可見,若要響應(yīng)同級甚至是低級中斷請求,必須使得該“優(yōu)先級生效”觸發(fā)器清零。但該觸發(fā)器又是不可尋址的,所以無法用軟件直接清零。遍歷系統(tǒng)所提供的111條指令,只有RETI可以達(dá)到此目的。該指令可在CPU執(zhí)行該指令時,一方面清除中斷響應(yīng)時所置位的“優(yōu)先級生效”觸發(fā)器,另一方面可從當(dāng)前棧頂彈出斷點地址送入程序計數(shù)PC,從而返回主程序。

3 軟件擴(kuò)展方法

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

現(xiàn)以當(dāng)前IE=84H(開放外部中斷1及總控制位),IP=04H?設(shè)定INT1為高優(yōu)先級 正在執(zhí)行外部中斷1服務(wù)子程序為例來進(jìn)行說明。如欲響應(yīng)串行口中斷,也就是要實現(xiàn)高級中斷源響應(yīng)低級中斷源,設(shè)計時可加入如下代碼而無須改變IP寄存器的內(nèi)容:

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

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

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

隨時響應(yīng)串行口中斷請求

...

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

RETI

PP: RETI

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

上述代碼體現(xiàn)了高級中斷源(INT1)響應(yīng)低級中斷源(串行口)的軟件實現(xiàn)方法。但是, 8051系統(tǒng)共含有5個中斷源,因此必須解決同優(yōu)先級中斷之間的嵌套問題,具體源程序如下:

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 ;設(shè)定INT0、T0為高優(yōu)先級

SJMP $

X0: PUSH DPL

PUSH DPH

MOV DPTR,#X0RL

PUSH DPL

PUSH DPH

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

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

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

·
·
·

POP DPH

POP DPL

RETI

T0: PUSH DPL

PUSH DPH

MOV DPTR,#T0RL

PUSH DPL

PUSH DPH

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

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

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

·
·
·

POP DPH

POP DPL

RETI

X1: PUSH DPL

PUSH DPH

MOV DPTR,#X1RL

PUSH DPL

PUSH DPH

RETI ;(PC)=X1RL,清“高優(yōu)先級生效”

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

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

·
·
·

POP DPH

POP DPL

RETI

T1: PUSH DPL

PUSH DPH

MOV DPTR,#T1RL

PUSH DPL

PUSH DPH

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

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

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

·
·
·

POP DPH

POP DPL

RETI

SS: PUSH DPL

PUSH DPH

MOV DPTR,#SSRL

PUSH DPL

PUSH DPH

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

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

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

·
·
·

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)先級擴(kuò)展方法是純軟件方法,該方法只需在程序中加入為數(shù)不多的相應(yīng)代碼,便可進(jìn)行各種中斷嵌套(如同優(yōu)先級響應(yīng)或高優(yōu)先級響應(yīng)低優(yōu)先級等)。此方法的代價是要花費更多的中斷響應(yīng)時間,但相對于添加硬件擴(kuò)展的方法而言,這點代價還是值得的。
作者: shalione    時間: 2011-3-21 20:21
不錯!
作者: pjzhong    時間: 2011-3-25 16:04
深入學(xué)習(xí)中
作者: pcbkey    時間: 2015-2-7 11:22
支持一下




歡迎光臨 電子工程網(wǎng) (http://m.qingdxww.cn/) Powered by Discuz! X3.4
主站蜘蛛池模板: 亚洲中文久久精品AV无码| 青青青手机在线视频| 欧美又粗又硬又大久久久| 日韩欧美一区二区久久黑人 | 中文字幕在线看视频一区二区三区| 亚洲精品乱码久久久久久蜜桃图片| 高h肉辣文黄蓉| 美女视频秀色福利视频| 欧美激情综合亚洲一二区| 日本精品视频在线| 伊人黄色片| 一个人hd高清在线观看视频| 超碰97视频在线观看| 嫩草影院永久在线一二三四| 伊人香蕉在线播放视频免费| 一级毛片一级毛片| 日本视频一区二区| 中文字幕第233页| 799是什么意思网络用语| 精品国产成人a区在线观看| 免费A级毛片无码鲁大师| 色综合天天综合中文网| 欧美性色一级在线观看| 午夜影视在线免费观看| 性xxxxx中国好孕妇| 99久久精品国产免费| 九色91精品国产网站| 亚洲国产精品久久无套麻豆| 日本精品久久久中文字幕| 日本中文字幕在线| 最新理论片| 99热婷婷国产精品综合| 男女又黄又刺激B片免费网站| 猪蜜蜜网站在线观看电视剧| 亚洲 国产精品 日韩| 婷婷六月丁香| 亚洲va欧美va国产综合久久| 成人免费小视频| 亚洲乱码国产一区三区| 欧美视频精品在线| 亚洲一区在线免费|