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