在接下來的教程中,將會介紹定時器、串口通信等外設(shè)的基本使用,而這些外設(shè)的使用都要涉及中斷,而且中斷是單片機(jī)或嵌入式開發(fā)中一個相當(dāng)重要的概念。不能掌握中斷系統(tǒng),就無法靈活應(yīng)用這些外設(shè)。
一、中斷定義
CPU在處理某一事件A時,發(fā)生了另一事件B請求CPU迅速去處理(中斷發(fā)生);CPU暫時中斷當(dāng)前的工作,轉(zhuǎn)去處理事件B(中斷響應(yīng)和中斷服務(wù));待CPU將事件B處理完畢后,再回到原來事件A被中斷的地方繼續(xù)處理事件A(中斷返回),這一過程稱為中斷 。
引起CPU中斷的根源,稱為中斷源。中斷源向CPU提出的中斷請求。CPU暫時中斷原來的事務(wù)A,轉(zhuǎn)去處理事件B。
對事件B處理完畢后,再回到原來被中斷的地方(即斷點(diǎn)),稱為中斷返回。實現(xiàn)上述中斷功能的部件稱為中斷系統(tǒng)。
二、51中斷結(jié)構(gòu)
89C51/52的中斷系統(tǒng)有5個中斷源 ,2個優(yōu)先級,可實現(xiàn)二級中斷嵌套 。
1、(P3.2)可由IT0(TCON.0)選擇其為低電平有效還是下降沿有效。當(dāng)CPU檢測到P3.2引腳上出現(xiàn)有效的中斷信號時,中斷標(biāo)志IE0(TCON.1)置1,向CPU申請中斷。
2、(P3.3)可由IT1(TCON.2)選擇其為低電平有效還是下降沿有效。當(dāng)CPU檢測到P3.3引腳上出現(xiàn)有效的中斷信號時,中斷標(biāo)志IE1(TCON.3)置1,向CPU申請中斷。
3、TF0(TCON.5),片內(nèi)定時/計數(shù)器T0溢出中斷請求標(biāo)志。當(dāng)定時/計數(shù)器T0發(fā)生溢出時,置位TF0,并向CPU申請中斷。
4、TF1(TCON.7),片內(nèi)定時/計數(shù)器T1溢出中斷請求標(biāo)志。當(dāng)定時/計數(shù)器T1發(fā)生溢出時,置位TF1,并向CPU申請中斷。
5、RI(SCON.0)或TI(SCON.1),串行口中斷請求標(biāo)志。當(dāng)串行口接收完一幀串行數(shù)據(jù)時置位RI或當(dāng)串行口發(fā)送完一幀串行數(shù)據(jù)時置位TI,向CPU申請中斷。
三、中斷配置
CPU對中斷系統(tǒng)的所有中斷以及某個中斷源的開發(fā)和屏蔽是由中斷允許寄存器IE控制的。
EA:中斷允許總開關(guān)控制位。(1:所有中斷請求被允許;0:所有中斷請求被屏蔽)
ES:串行口中斷允許控制位。(1:允許串口中斷;0:禁止串口中斷)
ET1:定時器/計數(shù)器T1的溢出中斷允許控制位。(1:允許T1溢出中斷;0:禁止T1溢出中斷)
EX1:外部中斷1中斷允許位。(1:允許外部中斷1中斷;0:禁止外部中斷1中斷)
ET0:定時器/計數(shù)器T0的溢出中斷允許控制位。(1:允許T1溢出中斷;0:禁止T1溢出中斷)
EX0:外部中斷0中斷允許位。(1:允許外部中斷1中斷;0:禁止外部中斷1中斷)
1、中斷請求標(biāo)志
TOCN 的中斷標(biāo)志IT0(TCON.0),外部中斷0觸發(fā)方式控制位。
當(dāng)IT0=0時,為低電平觸發(fā)方式。
當(dāng)IT0=1時,為邊沿觸發(fā)方式(下降沿有效)。
IE0(TCON.1),外部中斷0中斷請求標(biāo)志位。
IT1(TCON.2),外部中斷1觸發(fā)方式控制位。
IE1(TCON.3),外部中斷1中斷請求標(biāo)志位。
TF0(TCON.5),定時/計數(shù)器T0溢出中斷請求標(biāo)志位。
TF1(TCON.7),定時/計數(shù)器T1溢出中斷請求標(biāo)志位。
2、中斷優(yōu)先級
外部中斷0(IE0)->定時/計數(shù)器0(TF0)->外部中斷1(IE1)->定時/計數(shù)器1(TF1)->串行口(R1或T1)
3、中斷源
外部中斷0(int0),對應(yīng)中斷號是0,中斷入口地址0003h
定時/計數(shù)器0(t1),對應(yīng)中斷號1,中斷入口地址000bh
外部中斷1(int1),對應(yīng)中斷號2,中斷入口地址0013h
定時/計數(shù)器1(t1),對應(yīng)中斷號3,中斷入口地址001bh
串行口中(ri/ti),對應(yīng)中斷號4,中斷入口地址0023h
3、中斷相應(yīng)條件
中斷源有中斷請求
此中斷源的中斷允許位為1
CPU開中斷(EA=1)
四、中斷定義
主程序中需要有以下代碼:
EA=1;//打開總中斷開關(guān)
EX0=1;//開外部中斷0
IT0=0/1;//設(shè)置外部中斷的觸發(fā)方式
中斷服務(wù)函數(shù):
void int0 () interrupt 0 using 1 // using 1 不用寫也不用管
{
do anything that you want
}
五、程序舉例
#include
sbit led =P2^1;
void main()
{
EA=1; //開啟總中斷,這個相當(dāng)于校長
TMOD =0x01;
TH0=(65536-48300)/256; //50ms
TL0=(65536-48300)%256;
TR0=1; // 打開定時器T0
ET0=1; //允許中斷 這個相當(dāng)于班主任,只有校長和班主任同意中斷才能中斷
while(1)
{
;
}
}
void time0() interrupt 1
{
unsigned int count;
TF0=0; //注意TF0同時是中斷請求標(biāo)志位,
//TF0=1,請求中斷
TH0=(65536-48300)/256; //50ms 裝初值
TL0=(65536-48300)%256;
count+=1;
if(count>=20)
{
led=~led;
count=0;
}
}
-
單片機(jī)
+關(guān)注
關(guān)注
6066文章
44951瀏覽量
648561 -
定時器
+關(guān)注
關(guān)注
23文章
3297瀏覽量
117511 -
嵌入式開發(fā)
+關(guān)注
關(guān)注
18文章
1075瀏覽量
48680 -
串口通信
+關(guān)注
關(guān)注
34文章
1637瀏覽量
56664
發(fā)布評論請先 登錄
51單片機(jī)定時器中斷_51單片機(jī)中斷系統(tǒng)_51單片機(jī)擴(kuò)展中斷的四種方法

單片機(jī)的中斷系統(tǒng)如何使用?基本概念和應(yīng)用詳細(xì)講解

51單片機(jī)教程之51單片機(jī)中斷系統(tǒng)的詳細(xì)資料概述

51單片機(jī)的中斷系統(tǒng)詳細(xì)資料總結(jié)

C51單片機(jī)學(xué)習(xí)筆記(四)——單片機(jī)的中斷系統(tǒng)及應(yīng)用

89C51單片機(jī)中的中斷系統(tǒng)

STM32單片機(jī)外部中斷配置講解

51單片機(jī)的中斷系統(tǒng)

51單片機(jī)的中斷系統(tǒng)

評論