<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ò ) 收藏

本文引用地址:http://dyxdggzs.com/article/170967.htm

就是CPU對源提出的中斷請求的接受。中斷請求被后,再經(jīng)過(guò)一系列的操作,而后轉向中斷服務(wù)程序,完成中斷所要求的處理任務(wù)。下面簡(jiǎn)要說(shuō)明80c51的中斷響應過(guò)程:

1.外中斷采樣和內中斷置位

1.1外中斷采樣

要想知道外中斷是否有請求發(fā)生,需要對外中斷進(jìn)行采樣。

當通過(guò)軟件將寄存器TCON的IT0(或IT1)位設置為0時(shí),/INT0(或/INT1)為電平觸發(fā)方式,CPU在每個(gè)機器周期的S5P2(第五個(gè)狀態(tài)第2拍節)期間對/INT0(或/INT1)采樣,一旦在P3.2(或P3.3)上檢測到低電平時(shí),則認為有外部中斷申請,隨即由硬件使TCON的IE0(或IE1)位置1,向CPU申請中斷。在中斷響應完成后轉向中斷服務(wù)子程序,再由硬件自動(dòng)對IE0(或IE1)位清0.

當寄存器TCON的IT0(或IT1)位為1,/INT0(或/INT1)為脈沖觸發(fā)方式,則CPU在每個(gè)機器的S5P2期間對/INT0(或/INT1)采樣,當檢測到前一周期為高電平、后一周期為低電平時(shí),由硬件使TCON的IE0(IE1)位置1,向CPU申請中斷,在中斷響應完成后轉向中斷服務(wù)子程序時(shí),再由硬件自動(dòng)對IE0(IE1)位清0.在邊沿觸發(fā)方式中,為保證CPU在兩個(gè)機器周期內檢測到由高到低的負跳變,高電平與低電平的持續時(shí)間不得少于一個(gè)機器周期的時(shí)間。

1.2內中斷置位

80c51把所有中斷標志都集中到TCON和SCON寄存器中。其中外中斷是使用采樣的方法把中斷請求鎖定在TCON寄存器的IE0(IE1)標志位上,而定時(shí)中斷和串行中斷的中斷請求由于都發(fā)生在芯片的內部,定時(shí)中斷可以直接去置位TCON的TF0(TF1),串行中斷可以直接去置位SCON的RI和TI。內中斷不存在采樣問(wèn)題。

2.中斷查詢(xún)

所謂查詢(xún),就是由CPU測試TCON和SCON中各標志位的狀態(tài),以確定有沒(méi)有中斷請求發(fā)生以及是哪一個(gè)中斷請求。是在每一個(gè)機器周期的最后狀態(tài)(S6),按優(yōu)先級順序對中斷請求標志進(jìn)行查詢(xún),即先查詢(xún)高級中斷后查詢(xún)低級中斷,同級中斷按“外部中斷0—定時(shí)中斷0—外部中斷1—定時(shí)中斷1—串行中斷”的順序查詢(xún)。如果查詢(xún)到有標志位為“1”,則表明有中斷請求發(fā)生,接著(zhù)就從相鄰的下一個(gè)機器周期的S6狀態(tài)開(kāi)始進(jìn)行中斷響應。

由于中斷請求是隨機發(fā)生的,CPU無(wú)法預先得知,因此在程序執行過(guò)程中,中斷查詢(xún)要在指令執行的每個(gè)機器周期中不停地重復進(jìn)行。換句話(huà)說(shuō),就相當于你在看書(shū)的時(shí)候,每一秒鐘都會(huì )抬起頭來(lái)聽(tīng)一聽(tīng),看一看,是不是有人按門(mén)鈴,是否有電話(huà),燒的開(kāi)水是否開(kāi)了。。。。。??磥?lái),比人蠢多了。

3.中斷響應

當查詢(xún)到有效的中斷請求時(shí),緊接著(zhù)就進(jìn)行中斷響應。中斷響應時(shí),根據寄存器TCON、SCON中的中斷標記,由硬件自動(dòng)生成一條長(cháng)調用指令LCALL XXXX,這里的XXXX就是程序存儲器中斷區中相應中斷的入口地址。對于80c51的5個(gè)獨立中斷源,這些入口地址已由系統設定。這樣在產(chǎn)生了相應的中斷以后,就可轉到相應的位置去執行。

例如,對于外部中斷0的響應,產(chǎn)生的長(cháng)調用指令為

LCALL 0003H

生成LCALL指令后,緊接著(zhù)就由CPU執行,首先將當前程序計數器PC的內容(準備執行的指令的地址)壓入堆棧以保護斷點(diǎn),再將中斷入口地址裝入PC,使程序轉向相應的中斷區入口地址。從中斷源所對應的向量地址中可以看出,一個(gè)中斷向量入口地址到下一個(gè)中斷向量入口地址之間只有8個(gè)單元。也就是說(shuō),中斷服務(wù)程序的長(cháng)度如果超過(guò)了8B,就會(huì )占用下一個(gè)中斷的入口地址,導致出錯。但一般情況下,很少有一段中斷服務(wù)程序只占用少于8B的情況,為此可以在中斷入口處寫(xiě)一條“LJMP XXXX”或“AJMP XXXX”指令,這樣可以把實(shí)際處理中斷的程序放到ROM的任何一個(gè)位置。

例如,若采用外中斷0,在程序的開(kāi)始處可以這樣寫(xiě):

ORG 0000H

LJMP MAIN

ORG 0003H

LJMP INT_0

;以下是主程序

MAIN:

;以下是外中斷0服務(wù)程序

INT_0:

RETI

END


上一頁(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>