新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > PIC單片機(jī)的中斷問(wèn)答

PIC單片機(jī)的中斷問(wèn)答

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

與51或者其他系列的單片機(jī)相比,的中斷機(jī)制有其特殊之處,針對(duì)我們一些初學(xué)者存在的一些問(wèn)題和疑惑,我在此做一個(gè)個(gè)人總結(jié),不當(dāng)?shù)牡胤?,?qǐng)站友們指正。

先摘引三個(gè)對(duì)PIC中斷理解的回帖,然后我再對(duì)中斷活動(dòng)的過(guò)程、應(yīng)該注意的事項(xiàng)、及一個(gè)疑惑進(jìn)行較詳細(xì)的總結(jié)和解釋。

---------------

johnfrank:關(guān)于pic中斷有些不明白的地方

借用大蝦的程序;

;********************中斷服務(wù)代碼

btfssINTCON,T0IE;判斷是否為T0中斷

gotoother_int

btfssINTCON,T0IF;it’sthetimeofT0int

gotoother_int

bcfINTCON,T0IF;是T0中斷,清除中斷標(biāo)志

movlw0x10;微秒的高位字節(jié)加上定時(shí)時(shí)間256x16分頻=4096=0x1000的高位(0x10)

addwfus+1

gotoend_int

other_int;可添加其他中斷服務(wù)代碼

nop;otherisrcodecanbeadded

;**********************************

end_int;恢復(fù)現(xiàn)場(chǎng)

=================

假如又有新的中斷正好在這段程序中間產(chǎn)生

btfssINTCON,T0IF

gotoother_int

bcfINTCON,T0IF

程序豈不是要出錯(cuò)跑飛了

johnfrank:

謝謝你的關(guān)注。

我講一下自己的理解,權(quán)做回答,不當(dāng)之處,還請(qǐng)站友們指點(diǎn)。

pic中檔單片機(jī)系列沒(méi)有“硬件中斷優(yōu)先級(jí)別”(請(qǐng)?jiān)试S我這樣說(shuō)),含義是指:當(dāng)內(nèi)核正在處理當(dāng)前的中斷服務(wù)A時(shí),在這個(gè)期間里,其他任何中斷的產(chǎn)生,只能使其標(biāo)志位xxIF置1,不能剝奪當(dāng)前中斷服務(wù)對(duì)CPU的占用權(quán)(反應(yīng)在PC指針不能被新的中斷改變指向),必須等到當(dāng)前中斷服務(wù)處理A完畢,然后,根據(jù)gotoother_int語(yǔ)句的轉(zhuǎn)向,依次判斷。若新發(fā)生的中斷處理代碼在中斷服務(wù)A之后(前、后指代碼在ROM中地址順序,越大越后),則進(jìn)行新發(fā)生的中斷處理;若恰好新發(fā)生的中斷服務(wù)代碼在剛被處理完畢的中斷服務(wù)A代碼之前,則將不予理會(huì),(即程序指針PC不會(huì)在中斷處理代碼空間中又返回到0004H的入口),等到執(zhí)行到retfie后返回主程序,然后再次進(jìn)入中斷入口0004H...

之所以說(shuō)其無(wú)“硬件中斷優(yōu)先級(jí)別”是與“軟件中斷優(yōu)先級(jí)別”對(duì)應(yīng)的,通過(guò)中斷服務(wù)代碼對(duì)中斷標(biāo)志和IE的檢測(cè)的先后,可設(shè)立優(yōu)先級(jí)。


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

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉