<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è) > 嵌入式系統 > 設計應用 > 51單片機中斷的響應及撤銷(xiāo)

51單片機中斷的響應及撤銷(xiāo)

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

服務(wù)程序完成后,一定要執行一條RETI指令,執行這條指令后,CPU將會(huì )把堆棧中保存著(zhù)的地址取出,送回PC,那么程序就會(huì )從主程序的處繼續往下執行了。

說(shuō)明 CPU所做的保護工作是很有限的,只保護了一個(gè)地址(主程序處的地址),而其他的所有東西都不保護,所以如果你在主程序中用到了如A、DPTR、PSW等,在中斷程序中要用它們,還要保證回到主程序后這里面的數據還是沒(méi)執行中斷以前的數據,就得自己保護起來(lái)。

CPU會(huì )在機器周期的S5P2階段讀入中斷標志,并在下一個(gè)機器周期中檢查,如果中斷條件成立時(shí),系統會(huì )自行產(chǎn)生一個(gè)LCALL到相對應的中斷服務(wù)例程中,可是如果有下面3種情況時(shí),系統是不會(huì )對中斷要求信號有反應的:

a有相等或更高級的中斷正在執行中,這與處理突發(fā)事件的狀況相同,既然已經(jīng)在處理突發(fā)情況,當然就不再接受其他中斷條件,除非接下來(lái)的中斷情形的優(yōu)先權比較高。

由此得到一個(gè)觀(guān)念:所有的中斷程序都應該盡量簡(jiǎn)捷,一處理完中斷事項后立即回主程序,才不會(huì )占用過(guò)多時(shí)間,進(jìn)而影響系統的性能。

b目前的機器周期不是該指令的最后一個(gè)周期,由于80c51在指令執行時(shí),分別有1個(gè)、2個(gè)和4個(gè)機器周期之分,也就是說(shuō),必須完全執行完此指令后,系統對中斷信號才會(huì )有所反應。比方說(shuō),當系統正在執行MUL AB指令(需花4個(gè)機器周期)時(shí),中斷信號必須出現在第4個(gè)機器周期上才算有效。這也就意味著(zhù),中斷信號必須持續足夠長(cháng)的時(shí)間,以便80c51的CPU有時(shí)間去反應。

c若正在執行的指令為RETI或者是關(guān)于中斷設置IE、IP的指令時(shí),對正好出現的中斷信號不反應,因為上述的情況剛好是某個(gè)中斷服務(wù)程序的結束,或是允許/禁止某個(gè)中斷的指令,當然是等到這些指令執行完畢后,才會(huì )對中斷信號有所反應,這些指令最多占用兩個(gè)機器周期的時(shí)間,所以這時(shí)的中斷信號必須保持有兩個(gè)機器周期以上的時(shí)間,才能被80c51接受。

中斷的撤除

中斷后,TCON或SCON中的中斷請求標志應及時(shí)清除。否則就意味著(zhù)中斷請求仍然存在,弄不好就會(huì )造成中斷的重復查詢(xún)和,因此就存在一個(gè)中斷請求的撤除問(wèn)題。

1 定時(shí)器中斷請求的撤除

定時(shí)中斷后,硬件自動(dòng)把標志位TF0(或TF1)清0,因此定時(shí)中斷的中斷請求是自動(dòng)撤除的,不需要用戶(hù)干預。

2 串行中斷軟件撤除

對于串行中斷,CPU響應中斷后,沒(méi)有用硬件清除它們的中斷標志RI、TI,必須在中斷服務(wù)程序中用軟件清除,以撤除其中斷請求。

3 外中斷請求的撤除

外部中斷的撤除包括中斷標志位IE0(或IE1)的清0和外中斷請求信號的撤除。其中IE0(或IE1)清“0”是在中斷響應后由硬件電路自動(dòng)完成的。剩下的只是外中斷引腳請求信號的撤除了。下面對脈沖和電平兩種觸發(fā)方式分別進(jìn)行討論。

a對于脈沖方式的中斷請求,由于脈沖信號過(guò)后就消失了,也可以說(shuō)中斷請求信號是自動(dòng)撤除的。

b對于電平方式的外部中斷,中斷標志的撤除是自動(dòng)的,但中斷請求信號的低電平可能繼續存在,在以后機器周期采樣時(shí),又會(huì )把已清0的IE0或IE1標志位重新置1.為此,要徹底解決電平方式外中斷的撤除,除了標志位清0之外,必要時(shí)還需在中斷響應后把中斷請求信號引腳從低電平強制改變?yōu)楦唠娖?,為此,可在系統中增加如圖所示電路

6.jpg

外中斷請求標志撤除電路

從圖可以看出,外部中斷0請求信號在D觸發(fā)器(可選用74LS74)的時(shí)鐘輸入端。當外部設備有中斷請求信號(為低電平)出現時(shí),Q端輸出為低電平,/INT0有效,向CPU發(fā)出中斷請求信號。CPU響應中斷后,在中斷服務(wù)程序中由軟件安排1個(gè)低電平中斷應答信號,從P1.0送至D觸發(fā)器的/SD(置位端,低電平有效),使D觸發(fā)器的Q端輸出為高電平,從而撤除了低電平的外中斷0請求信號。/SD端所需的低電平可通過(guò)在中斷服務(wù)程序中增加一下指令的得到:

ANL P1,#0FEH ;使P1.0輸出為低電平,D觸發(fā)器置位

在中斷服務(wù)程序中還要加上撤除外中斷0標志指令,即

CLR IE0 ;清外中斷標志,以便下次可再次中斷

可見(jiàn),電平方式外部中斷請求信號的撤除是通過(guò)軟、硬件相結合的方法實(shí)現的。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 撤銷(xiāo) 響應 中斷 單片機

評論


相關(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>