<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > MCS-51單片機的中斷系統(2)

MCS-51單片機的中斷系統(2)

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

中斷響應過(guò)程

中斷響應過(guò)程為,中斷源發(fā)出中斷請求→對中斷請求進(jìn)行響應→執行中斷服務(wù)程序→返回主程序。這個(gè)過(guò)程可分為三個(gè)階段來(lái)完成。
1. 中斷采樣
對于外部中斷請求,中斷請求信號來(lái)自于單片機外部,計算機要想知道有沒(méi)有中斷請求發(fā)生,必須對信號進(jìn)行采樣。
① 電平觸發(fā)方式的外中斷請求(IT0/IT1=0)采樣到高電平時(shí),表明沒(méi)有中斷請求,IE0或IE1繼續為“0”。采樣到低電平時(shí),IE0/IE1由硬件自動(dòng)置“1”,表明有外中斷請求發(fā)生。
② 脈沖觸發(fā)式的外中斷請求(IT0/IT1=1)在相鄰的機器周期采樣到的電平由高電平變?yōu)榈碗娖綍r(shí),則IE0/IE1由硬件自動(dòng)置“1”,否則為“0”。
2. 中斷查詢(xún)
由CPU測試TCON和SCON中的各個(gè)中斷標志位的狀態(tài),確定有那個(gè)中斷源發(fā)生請求,查詢(xún)時(shí)按優(yōu)先級順序進(jìn)行查詢(xún),即先查詢(xún)高優(yōu)先級再查詢(xún)低優(yōu)先級。如果同級,按以下順序查詢(xún):
#INT0→T0→#INT1→T1→ S
如果查詢(xún)到有標志位為“1”,表明有中斷請求發(fā)生,接著(zhù)就從相鄰的下一機器周期開(kāi)始進(jìn)行中斷響應。
3. 中斷響應
當CPU查詢(xún)到中斷請求時(shí),由硬件自動(dòng)產(chǎn)生一條LCALL指令,LCALL指令執行時(shí),首先將PC內容壓入堆棧進(jìn)行斷點(diǎn)保護,再把中斷入口地址裝入PC,使程序轉向相應的中斷區入口地址。LCALL指令的形式如下:
LCALL addr16 ;addr16:中斷入口地址
入口地址已由系統設定,如下:
中斷源入口地址
0003H
T0000BH
0013H
T1001BH
S0023H
從表中可以看出,每個(gè)中斷區只有8個(gè)單元,很難安排下一個(gè)中斷程序,一般是在中斷入口地址處加一條跳轉指令,跳轉到用戶(hù)的服務(wù)程序入口。編寫(xiě)中斷服務(wù)程序的格式一般如下:
ORG 0000H
SJMP MAIN
ORG 0003H
AJMP 1NJERRVP
MAIN: ···
HERE: SJMP HERE
1NJERRVP: ··· ;中斷響應程序
RETI
并不是所有的請求都被響應,當遇到下列情況之一時(shí)不響應這些中斷請求:
(1)CPU正在處理一個(gè)同級或者高級的中斷服務(wù)
(2)當前指令還沒(méi)有執行完畢
(3)當前指令是RET、RETI或者是訪(fǎng)問(wèn)IP、IE的指令,執行完這些指令后,還必須再執行一條指令,才響應中斷請求。
注意:MCS-51單片機對中斷查詢(xún)結果不作記憶,當有新的查詢(xún)結果出現時(shí),因為以上原因而被拖延的查詢(xún)結果將不復存在,其中斷請求也就不能再被響應了。

中斷請求的撤銷(xiāo)

中斷響應后,TCON和SCON的中斷請求標志位應及時(shí)撤銷(xiāo)。否則意味著(zhù)中斷請求仍然存在,有可能造成中斷的重復查詢(xún)和響應,因此需要在中斷響應完成后,撤銷(xiāo)其中斷標志。
1. 定時(shí)中斷請求的撤銷(xiāo)
硬件自動(dòng)把TF0(TF1)清0,不需要用戶(hù)參與。
2. 串行中斷請求的撤銷(xiāo)
需要軟件清零。
3. 外部中斷請求的撤銷(xiāo)
(1)脈沖觸發(fā)方式的外中斷請求撤銷(xiāo)
中斷標志位的清零是自動(dòng)的,脈沖信號過(guò)后就不存在了,因此其撤銷(xiāo)是自動(dòng)的。
(2)電平觸發(fā)方式的外中斷請求撤銷(xiāo)
中斷標志位的清零是自動(dòng)的,但是如果低電平持續存在,在以后的機器周期采樣時(shí),又會(huì )把中斷請求標志位(IE 0/IE 1)置位。為此,需要外加電路,把中斷請求信號從低電平強制為高電平。

電平觸發(fā)方式的外中斷請求撤銷(xiāo)
通過(guò)直接置位端#Sd使中斷請求信號強制從低電平變?yōu)楦唠娖?,要?shí)現此功能需要在中斷入口地址處加入如下兩條指令:
ORL P1, #01H
ANL P1,#0FEH


關(guān)鍵詞: MCS-51單片機中斷系

評論


相關(guān)推薦

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

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>