一、中斷的概念CPU在處理某一事件A時(shí),發(fā)生了另一事件B請求CPU迅速去處理(中斷發(fā)生);
CPU暫時(shí)中斷當前的工作,轉去處理事件B(中斷響應和中斷服務(wù));
待CPU將事件B處理完畢后,再回到原來(lái)事件A被中斷的地方繼續處理事件A(中斷返回),這一過(guò)程稱(chēng)為中斷
本文引用地址:http://dyxdggzs.com/article/201611/318431.htm
二、中斷源
在51單片機中有5個(gè)中斷源
中斷號優(yōu)先級中斷源中斷入口地址
01(最高)外部中斷00003H
12定時(shí)器0000BH
23外部中斷10013H
34定時(shí)器10018H
45串口總段0023H
三、中斷寄存器
單片機有10個(gè)寄存器主要與中斷程序的書(shū)寫(xiě)控制有關(guān)
1.中斷允許控制寄存器IE
2.定時(shí)器控制寄存器TCON
3.串口控制寄存器SCON
4.中斷優(yōu)先控制寄存器IP
5.定時(shí)器工作方式控制寄存器TMOD
6.定時(shí)器初值賦予寄存器(TH0/TH1,TL0/TL1)
寄存器詳細說(shuō)明:http://blog.sina.com.cn/s/blog_a05b986d0101545c.html
四、寄存器功能與賦值說(shuō)明
注:在用到中斷時(shí),必須要開(kāi)總中斷EA,即EA=1。//開(kāi)總中斷
1.中斷允許控制寄存器IE

EX0(EX1):外部中斷允許控制位
EX0=1外部中斷0開(kāi)關(guān)閉合//開(kāi)外部0中斷
EX0=0 外部中斷0開(kāi)關(guān)斷開(kāi)
ET0(ET1):定時(shí)中斷允許控制位
ET0=1定時(shí)器中斷0開(kāi)關(guān)閉合//開(kāi)內部中斷0
ET0=0 定時(shí)器中斷0開(kāi)關(guān)斷開(kāi)
ES:串口中斷允許控制位
ES=1串口中斷開(kāi)關(guān)閉合//開(kāi)串口中斷
ES=0 串口中斷開(kāi)關(guān)斷開(kāi)
2.定時(shí)器控制寄存器TCON//控制外部中斷和定時(shí)器中斷

外部中斷:
IE0(IE1):外部中斷請求標志位
當INT0(INT1)引腳出現有效的請求信號,此位由單片機自動(dòng)置1,cpu開(kāi)始響應,處理終端,而當入
中斷程序后由單片機自動(dòng)置0.
//外部中斷,即外部中斷相應的引腳接入低電平或下降沿信號時(shí),中斷開(kāi)始響應。
IT0(IT1):外部中斷觸發(fā)方式控制位//選擇有效信號
IT0(IT1)=1:脈沖觸發(fā)方式,下降沿有效。
IT0(IT1)=0:電平觸發(fā)方式,低電平有效。
內部中斷:
TF0(TF1):內部定時(shí)器/計數器溢出中斷標志位
當定時(shí)器、計數器計數溢出的時(shí)候,此位由單片機自動(dòng)置1,cup開(kāi)始響應,處理中斷,而當進(jìn)入中
斷程序后由單片機自動(dòng)置0.
//內部中斷實(shí)際上就是利用內部的計數器,只不過(guò)提供計數的脈沖來(lái)自單片機自身。
TRO(TR1):定時(shí)器/計數器啟動(dòng)位//啟動(dòng)定時(shí)器
TRO(TR1)=1; 啟動(dòng)定時(shí)器/計數器0
TR0(TR1)=0; 關(guān)閉定時(shí)器/計數器0
3.串口控制寄存器SCON

TI:串行口發(fā)送中斷標志位
當單片機串口發(fā)送完一幀數據后,此位由單片機自動(dòng)置1,而當進(jìn)入中斷服務(wù)程序后是不會(huì )自動(dòng)清0的,
必須由用戶(hù)在中斷服務(wù)中用軟件清0.
RI:串行口接收中斷標志位
當單片機串口接收完一幀數據后,此位由單片機自動(dòng)置1,而當進(jìn)入中斷服務(wù)程序后是不會(huì )自動(dòng)清0的,
必須由用戶(hù)在中斷服務(wù)軟件中用軟件清0.
(IP以后補上,TMOD,TL0/TH0 在定時(shí)器/計數器中講)
五、中斷結構圖:

六、定時(shí)器/計數器
1.計數的定義:
計數是指對外部事件進(jìn)行計數,外部事件的發(fā)生以輸入脈沖的形式表示,因此計數功能的實(shí)質(zhì)就是對外來(lái)
的脈沖進(jìn)行計數,在單片機中對應引腳T0和T1,兩個(gè)脈沖輸入端。
外部輸入的脈沖在負跳變時(shí)有效(即外部脈沖由1變化到0),計數器加1.
2.定時(shí)器:
定時(shí)器是通過(guò)計數器的計數來(lái)實(shí)現的,不過(guò)此時(shí)的計數脈沖來(lái)自單片機的內部,因此定時(shí)器的實(shí)質(zhì)是對內
部脈沖的計數,在單片機中,每個(gè)機器周期產(chǎn)生一次計數脈沖,計數器加1.
3.工作方式控制寄存器TMOD:

TMOD的低半字節(D0,D1,D2,D3)用來(lái)控制定時(shí)器/計數器0
TMOD的高半字節(D4,D5,D6,D7)用來(lái)控制定時(shí)器/計數器1
對TMOD中的內容說(shuō)明:
GATE——門(mén)控制。
GATE=1時(shí),由外部中斷引腳INT0、INT1來(lái)啟動(dòng)定時(shí)器T0、T1。
當INT0引腳為高電平時(shí)TR0置位,啟動(dòng)定時(shí)器T0;
當INT1引腳為高電平時(shí)TR1置位,啟動(dòng)定時(shí)器T1。
GATE=0時(shí),僅由TR0,TR1置位分別啟動(dòng)定時(shí)器T0、T1。
C/T——功能選擇位
C/T=0時(shí)為定時(shí)功能,C/T=1時(shí)為計數功能。
M0、M1——方式選擇功能
由于有2位,因此有4種工作方式
4.根據單片機晶振,所選TMOD的的工作方式,所要定的時(shí)間,來(lái)確定THO和TLO所要賦予的初值
(以12M晶振,工作方式1,16位計數器為例,設所定時(shí)間為Xus(16為計數器最大數65536,即65536us,若所
定時(shí)間大于65535,則要用if語(yǔ)句控制,現假設X<65535))
1.時(shí)鐘周期的時(shí)間t=1/12M=1/12 us
2.機器周期的時(shí)間T=12*1/12=1 us
3.因為每經(jīng)過(guò)一個(gè)機器周期計數器+1,所以,計數器+1,經(jīng)過(guò)的時(shí)間為1 us。
若所定時(shí)間為X,則要求經(jīng)過(guò)Xus,中斷響應,又因為16為計數器要全部置1(即達到65535)+1后,中斷才會(huì )
響應,所以,初值=(65536-X)
4.將初值轉化為16進(jìn)制碼,分別付給THO和TLO
eg:所定時(shí)間5ms
初值=(65536-5000)=60536=EC78
TH0=0XEC; TL0=0X78;
(當工作方式不同時(shí),TH0/TL0的賦值也不同,個(gè)人覺(jué)得有了16位計數器了,其余的沒(méi)什么用,不介紹了)
5.寫(xiě)程序時(shí)另一種THO/TLO賦值方法
TH0=(65536-20000)/256;
TL0=(65536-20000)%6;
這樣設置,每經(jīng)過(guò)20ms,發(fā)生一次中斷,中斷時(shí)間一般以秒為單位,所以經(jīng)過(guò)n次中斷即可。
評論