包含五個(gè)中斷源,兩級(jí)中斷優(yōu)先級(jí),優(yōu)先級(jí)可編程設(shè)置,通過(guò)IP進(jìn)行設(shè)置:
PX0(IP.0),外部中斷0優(yōu)先級(jí)設(shè)定位;
PT0(IP.1),定時(shí)/計(jì)數(shù)器T0優(yōu)先級(jí)設(shè)定位;
PX1(IP.2),外部中斷0優(yōu)先級(jí)設(shè)定位;
PT1(IP.3),定時(shí)/計(jì)數(shù)器T1優(yōu)先級(jí)設(shè)定位;
PS (IP.4),串行口優(yōu)先級(jí)設(shè)定位;
PT2 (IP.5) ,定時(shí)/計(jì)數(shù)器T2優(yōu)先級(jí)設(shè)定位。
從這張圖里我們可以看出:
EA是中斷控制位,EA=1開放中斷,EA=0屏蔽所用中斷(編程時(shí)人為設(shè)定)
那EA是在哪里進(jìn)行設(shè)置的呢?它就是在IE(中斷允許寄存器)里進(jìn)行設(shè)定的
第七位就是EA,剩下的還有第四位的ES,第三位的ET1,第二位的EX1,第一位的ET0和第零位的EX0,是不是在上圖中都能看到他們的影子?沒錯(cuò),要不IE能稱為中斷允許寄存器嘛?是不是他先是設(shè)定總允許中斷,然后再設(shè)定其它的中斷是不是允許的,接下來(lái)我們?cè)賮?lái)看其它中斷允許位
ES:串行口中斷開放控制位,ES=1,響應(yīng)串行口中斷,ES=0,禁止串行口中斷
ET1:T1溢出中斷開放控制位,ET1=1,響應(yīng)T1溢出產(chǎn)生的中斷;ET1=0,禁止T1溢出產(chǎn)生的中斷
EX1:外部中斷1開放控制位,EX1=1,響應(yīng)外部中斷,EX1=0,禁止外部中斷
ET0:功能同ET1,對(duì)應(yīng)T0
EX0:功能同EX1,對(duì)應(yīng)外部中斷0
這樣,中斷是否開啟就由你說(shuō)了算了,你要用什么直接就可以控制對(duì)應(yīng)的中斷和總中斷EA就可以了。
現(xiàn)在我們開啟了中斷,cpu就會(huì)檢測(cè)對(duì)應(yīng)的中斷是否到來(lái),那如何檢測(cè)的呢?接下來(lái)我們就要用到另外幾個(gè)有用的位了
TCON的第七位TF1,第五位TF0,第三位IE1,第一位IE0
SCON的第一位TI,第零位RI。
RI(SCON.0),串行口接收中斷標(biāo)志位。當(dāng)允許串行口接收數(shù)據(jù)時(shí),每接收完一個(gè)串行幀,由硬件置位RI。注意,RI必須由軟件清除。
TI(SCON.1),串行口發(fā)送中斷標(biāo)志位。當(dāng)CPU將一個(gè)發(fā)送數(shù)據(jù)寫入串行口發(fā)送緩沖器時(shí),就啟動(dòng)了發(fā)送過(guò)程。每發(fā)送完一個(gè)串行幀,由硬件置位TI。CPU響應(yīng)中斷時(shí),不能自動(dòng)清除TI,TI必須由軟件清除。
TF1:T1當(dāng)定時(shí)時(shí)間到或是當(dāng)計(jì)數(shù)個(gè)數(shù)到的時(shí)候,會(huì)觸發(fā)TF1位,然后CPU檢測(cè)TF1位,執(zhí)行對(duì)應(yīng)的中斷,響應(yīng)中斷后,硬件清零。
TF0:對(duì)應(yīng)于TF1
IE1:外部中斷請(qǐng)求標(biāo)志,外部中斷執(zhí)行,請(qǐng)求中斷,對(duì)應(yīng)IE1=1,CPU響應(yīng)中斷,硬件對(duì)IE1清零。
IE0:對(duì)應(yīng)IE1
但是對(duì)于外部中斷,卻有兩種中斷觸發(fā)方式,一種是低電平觸發(fā),一種是下降沿觸發(fā)。我們對(duì)于不同情況要進(jìn)行不同的控制,那什么對(duì)這兩種方式進(jìn)行先擇呢?我們看TCON的第二位和第零位是沒有用的,就是他們兩個(gè),第二位IT1對(duì)應(yīng)外部中斷1,第零位IT0對(duì)應(yīng)外部中斷0,給他們高電平就為下降沿觸發(fā),給他們低電平就為低電平觸發(fā)。
這樣對(duì)于中斷的了解就比較清楚了吧!接下來(lái)的內(nèi)容里我們會(huì)通過(guò)學(xué)習(xí)其它內(nèi)容,對(duì)這里有更深入的了解。
附:中斷優(yōu)先權(quán)圖
來(lái)源;21ic
評(píng)論
查看更多