找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 16174|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

中斷的相關(guān)理解及使用詳解

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:94349 發(fā)表于 2015-11-10 02:03 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
所謂的中斷就是:
做事:
在做A事情的時(shí)候,被打斷去做B事情,回來(lái)后再返回繼續(xù)做A事情。
程序:
在執(zhí)行A程序的時(shí)候,打斷轉(zhuǎn)而執(zhí)行B程序,完成后B程序后繼續(xù)返回執(zhí)行A程序。

簡(jiǎn)而言之,如下:


52單片機(jī)一共有6個(gè)中斷源,他們的符號(hào)、名稱及產(chǎn)生的條件分別解釋如下:


6個(gè)中斷源中,其默認(rèn)的中斷級(jí)別如下:


中斷允許寄存器_IE

EA=1;開(kāi)全局中斷
ET2=1;打開(kāi)T2中斷(僅52有T2中斷)
ES=1;打開(kāi)串行口中斷
ET1=1;打開(kāi)T1中斷

EX1=1;打開(kāi)外部中斷1中斷
EX0=1;打開(kāi)外部中斷0中斷

中斷優(yōu)先級(jí)寄存器_IP

PS=1;串行口中斷定義為高優(yōu)先級(jí)
PT1=1;定時(shí)器/計(jì)數(shù)器1中斷定義為高優(yōu)先級(jí)
PX1=1;外部中斷1中斷定義為高優(yōu)先級(jí)
PT0=1;定時(shí)器/計(jì)數(shù)器0定義為高優(yōu)先級(jí)中斷
PX0=1;外部中斷0中斷定義為高優(yōu)先級(jí)
注意:當(dāng)以上值為零時(shí),則自然被定義為低優(yōu)先級(jí)中斷。

定時(shí)器/計(jì)數(shù)器工作方式寄存器_TMOD

GATE:門控位
C/T:模式選擇,計(jì)數(shù)器方式:C/T=1;定時(shí)器模式:C/T=0
M0M1:工作方式選擇
每個(gè)定時(shí)器/計(jì)數(shù)器均有4種工作方式,其主要有M0M1確定:



定時(shí)器/計(jì)數(shù)器控制寄存器_TCON

TF1:定時(shí)器1溢出標(biāo)志位
當(dāng)定時(shí)器1計(jì)數(shù)滿時(shí),有硬件置位,并申請(qǐng)中斷,進(jìn)入中斷后,由硬件自動(dòng)清零。
備注:使用定時(shí)器中斷,改為無(wú)需人工操作,如使用軟件查詢的時(shí)候,查詢到改位為1,徐軟件清零。
TR1=1;啟動(dòng)定時(shí)器1
TF0;定時(shí)器0溢出標(biāo)志,同TF1。
TR0=1;啟動(dòng)定時(shí)器0
IE1;IT1=0時(shí),電平觸發(fā),INT1腳為底時(shí)置1。IT1=1時(shí),跳變沿觸發(fā),第一個(gè)機(jī)器周期采樣INT1為低IE置1
IT1=0;電平觸發(fā)方式,引腳INTI1上低電平有效
IT1=1;跳變沿觸發(fā)方式,引腳INTI1上的電平從高到低的負(fù)跳變沿有效

IE0;外部中斷0請(qǐng)求標(biāo)志,同IE1
IT0:外部中斷0觸發(fā)方式選擇位同IT1。

通常定時(shí)器初始化過(guò)程如下:
對(duì)TMOD賦值,以確定T0和T1的工作方式
計(jì)算初值,并將初值寫入TH0、TL0和TH1、TL1
中斷方式時(shí),則對(duì)IE賦值,開(kāi)放中斷
使TR0或者TR1置位,啟動(dòng)定時(shí)器/計(jì)數(shù)器定時(shí)或者計(jì)數(shù)

程序?qū)?yīng)如下:
//定時(shí)器0工作方式1
TMOD=0X01;            //定時(shí)器0工作方式1(M1M0為01)
TH0=(65536-45872)/256;   //裝初值,11.0592MHz晶振定時(shí)50ms,數(shù)為45872
TL0=(65536-45872)%6;
EA=1;                //開(kāi)總中斷
ET0=1;               //開(kāi)定時(shí)器0中斷
TR0=1;               //啟動(dòng)定時(shí)器0
while(1){};            //程序停止在此處等待中斷發(fā)生

//定時(shí)器0工作方式0
TMOD=0X00;            //定時(shí)器0工作方式0(M1M0為00)
TH0=(8192-4607)/32;   //裝初值
TL0=(8192-4607)2;
EA=1;                //開(kāi)總中斷
ET0=1;               //開(kāi)定時(shí)器0中斷
TR0=1;               //啟動(dòng)定時(shí)器0
while(1){};            //程序停止在此處等待中斷發(fā)生
備注:(8192-4607)/32  對(duì)32求模是因?yàn)槎〞r(shí)器方式0為13位計(jì)數(shù)器,
計(jì)數(shù)時(shí)只用了TL0的低五位。
五位最多裝在32個(gè)數(shù),再加1便會(huì)進(jìn)位。與16為計(jì)數(shù)器裝在256個(gè)數(shù)不同。因此此處對(duì)32求模。

//定時(shí)器0工作方式2
TMOD=0X02;            //定時(shí)器0工作方式0(M1M0為02)
TH0=6;   //裝初值
TL0=6;
EA=1;                //開(kāi)總中斷
ET0=1;               //開(kāi)定時(shí)器0中斷
TR0=1;               //啟動(dòng)定時(shí)器0
while(1){};            //程序停止在此處等待中斷發(fā)生

//定時(shí)器0工作方式3
TMOD=0X03;            //定時(shí)器0工作方式0(M1M0為03)
TH0=6;   //裝初值
TL0=6;
EA=1;                //開(kāi)總中斷
ET0=1;               //開(kāi)定時(shí)器0中斷
ET1=1;               //開(kāi)定時(shí)器1中斷
TR0=1;               //啟動(dòng)定時(shí)器0
TR1=1;               //啟動(dòng)定時(shí)器1
while(1){};            //程序停止在此處等待中斷發(fā)生
注:TL0占用定時(shí)器T1的中斷請(qǐng)求標(biāo)志,因此為了避免沖突,設(shè)計(jì)程序時(shí),T0的方式3不可用在有中斷的場(chǎng)合。

中斷方式的寫法:
void T0_time() interrupt 1  //定時(shí)器0中斷
{

}

void T1_time() interrupt 3 //定時(shí)器1中斷
{

}

定時(shí)器T2的介紹
其為16位的定時(shí)器計(jì)數(shù)器。
通過(guò)設(shè)置特殊功能寄存器T2CON的C/T2位,可以將其設(shè)定為定時(shí)器或者計(jì)數(shù)器
通過(guò)T2CON中的工作模式選擇位,可將定時(shí)器2設(shè)置為三種工作模式:捕獲、自動(dòng)重新裝載、波特率發(fā)聲器。

捕獲:捕捉某一瞬間的值,通常用他來(lái)測(cè)量外部某個(gè)脈沖的寬度或周期,使用捕獲功能可以非常準(zhǔn)確的測(cè)試脈沖寬度和周期。

定時(shí)器2控制器存器_T2CON

TF2;定時(shí)器2溢出時(shí)置位,必須由軟件清零,當(dāng)RCLK=1或TCLK=1時(shí),TF2 將不會(huì)置位。
EXF2;當(dāng)EXEN2=1且T2EX(單片機(jī)P1.1口)的負(fù)跳變產(chǎn)生捕獲或重裝時(shí),EXF2置位。
定時(shí)器2中斷使能時(shí),EXF2=1將是CPU進(jìn)入定時(shí)器2的中斷服務(wù)程序。
EXF2必須用軟件清零。在遞增(遞減)計(jì)數(shù)模式(DCEN=1),EXF2不會(huì)引起中斷
RCLK;接收時(shí)鐘標(biāo)志
RCLK=1時(shí),定時(shí)器2的溢出脈沖作為串行口模式1或模式3的接收時(shí)鐘,
RCLK=0時(shí),將定時(shí)器1的溢出脈沖作為接收時(shí)鐘。

TCLK;發(fā)送時(shí)鐘標(biāo)志
TCLK=1時(shí),定時(shí)器2的溢出脈沖作為串行口模式1或模式3的發(fā)送時(shí)鐘,
TCLK=0時(shí),將定時(shí)器1的溢出脈沖作為發(fā)送時(shí)鐘
。
EXEN2;定時(shí)器2外部使能標(biāo)志
EXEN2=1且定時(shí)器2未作為串行口時(shí)鐘時(shí),允許T2EX的負(fù)跳變產(chǎn)生捕獲獲重裝,
EXEN2=0時(shí),T2EX的跳變對(duì)定時(shí)器2無(wú)效

TR2;置1啟動(dòng)定時(shí)器,置零停止定時(shí)器2
C/T2;T2的定時(shí)器/計(jì)數(shù)器選擇位
C/T2=1,外部事件計(jì)數(shù)器(下降沿觸發(fā))
C/T2=0,內(nèi)部定時(shí)器

CP/RL2;捕獲重裝標(biāo)志
CP/RL2=1且EXEN2=1,T2EX的負(fù)跳變產(chǎn)生捕獲
CP/RL2=0且EXEN2=0,定時(shí)器2溢出或T2EX的負(fù)跳變都可是定時(shí)器自動(dòng)重裝

當(dāng)RCLK=1或TCLK=1時(shí),該位無(wú)效且定時(shí)器強(qiáng)制為溢出時(shí)自動(dòng)重裝。

定時(shí)器/計(jì)數(shù)器2的三中工作模式


定時(shí)器2模式控制寄存器

設(shè)定自動(dòng)重裝模式為遞增還是遞減。
T2OE;定時(shí)器2使能輸出位
DCEN;向下計(jì)數(shù)使能位

波特率發(fā)聲器_T2定時(shí)器
寄存器T2CON的TCLK和RCLK允許從定時(shí)器1或定時(shí)器2獲得串行口接收和發(fā)送的波特率
TCLK=0,定時(shí)器1作為串行口發(fā)送波特率發(fā)生器
TCLK=1,定時(shí)器2作為串行口發(fā)送波特率發(fā)生器


除了波特率發(fā)聲器模式,T2CON不包含TR2位的設(shè)置,TR2為需要單獨(dú)設(shè)置來(lái)啟動(dòng)定時(shí)器。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表