PIC單片機(jī)的中斷問(wèn)答
與51或者其他系列的單片機(jī)相比,PIC單片機(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í)。
評(píng)論