目標(biāo):中斷系統(tǒng)的理解
1.中斷簡介
- 中斷
中斷:cpu在正常執(zhí)行程序的過程中奏篙,計(jì)算機(jī)內(nèi)部或外部發(fā)生了另一件事請求cpu迅速去處理姻僧,cpu暫停停止當(dāng)前程序的運(yùn)行遇八,而轉(zhuǎn)去處理所發(fā)生的事件瘦赫,處理完就返回原來暫停的地方箕般,繼續(xù)執(zhí)行原來的任務(wù)
隨著計(jì)算機(jī)技術(shù)的應(yīng)用,人們發(fā)現(xiàn)中斷技術(shù)不僅解決了快速主機(jī)與慢速I/O設(shè)備的數(shù)據(jù)傳送問題顽分,而且還具有如下優(yōu)點(diǎn):
①分時(shí)操作徐许。CPU可以分時(shí)為多個(gè)I/O設(shè)備服務(wù),提高了計(jì)算機(jī)的利用率卒蘸;
②實(shí)時(shí)響應(yīng)雌隅。CPU能夠及時(shí)處理應(yīng)用系統(tǒng)的隨機(jī)事件,系統(tǒng)的實(shí)時(shí)性大大增強(qiáng)缸沃;
③可靠性高恰起。CPU具有處理設(shè)備故障及掉電等突發(fā)性事件能力,從而使系統(tǒng)可靠性提高和泌。
2.中斷系統(tǒng)結(jié)構(gòu)
系統(tǒng)構(gòu)造
- ①INT0(P3.2)村缸,當(dāng)CPU檢測到P3.2引腳上出現(xiàn)有效的中斷信號時(shí)祠肥,中斷標(biāo)志IE0(TCON.1)置1武氓,向CPU申請中斷〕鹣洌可由IT0(TCON.0)選擇其為低電平有效(置0)還是下降沿有效(置1)县恕。
- ②INT1(P3.3),當(dāng)CPU檢測到P3.3引腳上出現(xiàn)有效的中斷信號時(shí)剂桥,中斷標(biāo)志IE1(TCON.3)置1忠烛,向CPU申請中斷∪ǘ海可由IT1(TCON.2)選擇其為低電平有效(置0)還是下降沿有效(置1)美尸。
- ③T0(P3.4)冤议,它的中斷請求標(biāo)志是TF0--(TCON.5 ),T0發(fā)生溢出時(shí)师坎,置位TF0為1恕酸,并向CPU申請中斷。
- ④T1(P3.5)胯陋,它的中斷請求標(biāo)志位是TF1--(TCON.7)蕊温,T1發(fā)生溢出時(shí),置位TF1為1遏乔,并向CPU申請中斷义矛。
- ⑤RI(SCON.0)或TI(SCON.1),串行口中斷請求標(biāo)志盟萨。
當(dāng)串行口接收完送完一幀串行數(shù)據(jù)置位RI凉翻,向CPU申請中斷。
當(dāng)串行口發(fā)送完一幀串行數(shù)據(jù)時(shí)置位TI捻激,向CPU申請中斷噪矛。
3.中斷寄存器
(一)定時(shí)器控制寄存器TCON
定時(shí)器控制寄存器TCON
- IT0:外部中斷0觸發(fā)方式控制位。當(dāng)IT0=0時(shí)铺罢,為電平觸發(fā)方式艇挨。當(dāng)IT0=1時(shí),為邊沿觸發(fā)方式(下降沿有效)韭赘。
- IE0:外部中斷0中斷請求標(biāo)志位缩滨。
- IT1:外部中斷1觸發(fā)方式控制位。
- IE1:外部中斷1中斷請求標(biāo)志位泉瞻。
- TF0:定時(shí)/計(jì)數(shù)器T0溢出中斷請求標(biāo)志位脉漏。
- TF1:定時(shí)/計(jì)數(shù)器T1溢出中斷請求標(biāo)志位。
- TR0: T0運(yùn)行控制位袖牙。TR0置1時(shí)侧巨,T0開始工作;TR0置0時(shí)鞭达,T0停止
工作司忱。- TR1:T1運(yùn)行控制位。TR1置1時(shí)畴蹭,T1開始工作坦仍;TR1置0時(shí),T1停止
工作叨襟。
(2)中斷允許寄存器IE
IE
- EX0:外部中斷0允許位繁扎;
- ET0:定時(shí)/計(jì)數(shù)器T0中斷允許位;
- EX1:外部中斷0允許位;
- ET1:定時(shí)/計(jì)數(shù)器T1中斷允許位梳玫;
- ES: 串行口中斷允許位爹梁;
- EA :CPU中斷允許(總允許)位。(總開關(guān))
IE相當(dāng)于一個(gè)開關(guān)的角色
(3)中斷優(yōu)先級寄存器IP
IP
- PT2:定時(shí)器/計(jì)數(shù)器2中斷優(yōu)先級控制位(僅8052)提澎;1:高優(yōu)先級卫键,
0:低優(yōu)先級- PS:串行口優(yōu)先級控制位;1:高優(yōu)先級虱朵,0:低優(yōu)先級
- PT0/PT1:定時(shí)器/計(jì)數(shù)器0/1中斷優(yōu)先級控制位莉炉;1:高優(yōu)先級,0:
低優(yōu)先級- PX0/PX1:外部中斷管0/1中斷優(yōu)先級控制位碴犬;1:高優(yōu)先級絮宁,0:低優(yōu)
先級
4.中斷優(yōu)先級
我們會遇到多個(gè)中斷同時(shí)請求的情況,這時(shí)候就需要看自然優(yōu)先級了
自然優(yōu)先級
中斷執(zhí)行原則:
①CPU同時(shí)接收到幾個(gè)中斷時(shí)服协,首先響應(yīng)優(yōu)先級別最高的中斷請求绍昂。
②正在進(jìn)行的中斷過程不能被新的同級或低優(yōu)先級的中斷請求所中
斷。
③正在進(jìn)行的低優(yōu)先級中斷服務(wù)偿荷,能被高優(yōu)先級中斷請求所中斷窘游。
5.中斷的使用
(1)中斷響應(yīng)條件
①中斷源要有中斷請求
②中斷源的中斷允許位為1
③打開總中斷(即EA=1)
例如:外部中斷0(INT0)產(chǎn)生中斷
#include "reg52.h"
void main()
{
EA=1;//打開總中斷開關(guān)
EX0=1跳纳;//開外部中斷0
IT0=0忍饰;//設(shè)置外部中斷的觸發(fā)方式
while(1)
{
}
}
//中斷服務(wù)函數(shù)
void int0() interrupt 0 //0是中斷號,具體看是什么中段
{
...do anything that you want
中斷號