新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 51單片機的中斷,有些亂

51單片機的中斷,有些亂

作者: 時間:2016-11-24 來源:網(wǎng)絡(luò) 收藏
幾個與中斷有關(guān)的寄存器:
1. TCON:中斷標(biāo)志寄存器,內(nèi)容為
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
2. SCON:串行口控制寄存器,內(nèi)容為
SM0 SM1 SM2 REN TB8 RB8 TI RI
TI:發(fā)送數(shù)據(jù)前應(yīng)復(fù)位,發(fā)完一幀數(shù)據(jù)時,由硬件置位。
RI:接收中斷標(biāo)志,與TI類似
中斷響應(yīng)后,RI和TI不能自動清除,須由軟件來清除。
IT0,1:外部中斷的觸發(fā)方式,=1時為下降沿有效
IE0,1:外部中斷中斷請求標(biāo)志位
TF0,1:定時器溢出中斷請求
3. IP:中斷優(yōu)先級控制寄存器
自然優(yōu)先級的排列順序(由高到低):外部中斷0(INT0)、定時器T0、外部中斷1(INT1)、定時器T1、串口中斷。
寄存器內(nèi)容(D7、D6未用):PT2 PS PT1 PX1 PT0 PX0
PT2:定時器T2(52系列單片機才有T2)的優(yōu)先級控制位,=1時,設(shè)定T2為高優(yōu)先級,=0時為低優(yōu)先級;
PS:串口的優(yōu)先級控制位;
PT1:定時器T1的優(yōu)先級控制位;
PX1:外部中斷1的優(yōu)先級控制位;
PT0:定時器T0的;
PX0:外部中斷0的。
如果同時有幾個設(shè)定為高優(yōu)先級的,則按照自解優(yōu)先級的順序排隊。
4. IE:中斷允許控制寄存器
其內(nèi)容:EA 空 ET2 ES ET1 EX1 ET0 EX0
EA: CPU中斷的總允許位,=1時開放中斷,=0時屏蔽所有中斷,即俗稱的關(guān)中斷;
ES: 串口中斷允許位,=1時允許;
ET1:T1的
EX1:外部中斷1的
ET0:T0的
EX0:外部中斷0的
采用中斷處理的程序結(jié)構(gòu):
main()
....
設(shè)置 中斷允許控制寄器IE
設(shè)置 中斷優(yōu)先級寄存器IP
如果是外部中斷源,還要設(shè)置中斷請求的觸發(fā)方式IT0或IT1(在TCON中),以決定采用電平觸發(fā)還是跳變觸發(fā)
....
中斷服務(wù)程序(對照前面的定時器處理程序就明白了。。。)
函數(shù)類型 函數(shù)名(參數(shù)表) [interrupt 中斷號] [using N]
{
....
}
中斷號可以取值0-31(C51編譯器允許32個中斷,0-4為51的標(biāo)準(zhǔn)中斷源,0外部中斷0,1是定時器0,2是外部中斷1,3是
定時器1,4是串口中斷)using后的N表示第N組寄存器(8051有4組寄存器)。以下是有關(guān)寄存器組的問題:
1. 使用using指定與主函數(shù)不同的寄存器組(主函數(shù)一般使用寄存器組0);
2. 中斷優(yōu)先級相同的中斷處理函數(shù)(ISR)可用using指定相同的寄存器組(因為它們不會同時被調(diào)用),但優(yōu)先級不
同的ISR必須使用不同的寄存器組,在ISR中被調(diào)用的函數(shù)也要使用using指定與中斷函數(shù)相同的寄存器組;
3. 如果不用using,C51默認(rèn)選擇寄存器組0,這意味著程序?qū)⑶袚Q寄存器組,而要使用大量的PUSH和POP操作,指定寄
存器組的結(jié)果是節(jié)省了以上保護(hù)現(xiàn)場的操作,可以節(jié)省RAM空間及減少MCU的消耗;但這樣容易引起錯誤,一定要注意
,特別是在程序中進(jìn)行直接內(nèi)存訪問時。
4. 可以這樣設(shè)定:主程序使用bank 0,低中斷優(yōu)先級的所有中斷使用bank 1,高中斷優(yōu)先級的所有中斷使用bank 2。


關(guān)鍵詞: 51單片機中斷電平觸

評論


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

關(guān)閉