第四章-2 MCS-51單片機(jī)的內(nèi)部資源及其編程 外部中斷zxl_第1頁(yè)
第四章-2 MCS-51單片機(jī)的內(nèi)部資源及其編程 外部中斷zxl_第2頁(yè)
第四章-2 MCS-51單片機(jī)的內(nèi)部資源及其編程 外部中斷zxl_第3頁(yè)
第四章-2 MCS-51單片機(jī)的內(nèi)部資源及其編程 外部中斷zxl_第4頁(yè)
第四章-2 MCS-51單片機(jī)的內(nèi)部資源及其編程 外部中斷zxl_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第四章MCS-51單片機(jī)的內(nèi)部資源及其編程單片機(jī)技術(shù)與應(yīng)用4-2、外部中斷8051外部中斷中斷中斷源中斷優(yōu)先級(jí)中斷嵌套8051外部中斷中斷:當(dāng)CPU正處理某項(xiàng)事務(wù)時(shí),若外界或內(nèi)部發(fā)生緊急事件,要求CPU暫停正在處理的工作轉(zhuǎn)而去處理這個(gè)緊急事件,待處理完以后再回到原來(lái)被中斷的地方,繼續(xù)執(zhí)行原來(lái)被中斷了的程序,這樣的過(guò)程稱為中斷。(堆棧)中斷源:向CPU提出中斷請(qǐng)求的源稱為中斷源外部跳變信號(hào)(下降延)外部低電平等(0)8051外部中斷中斷優(yōu)先級(jí):當(dāng)幾個(gè)中斷源同時(shí)請(qǐng)求中斷時(shí),CPU應(yīng)優(yōu)先響應(yīng)最需緊急處理的中斷請(qǐng)求。為此,需要規(guī)定各個(gè)中斷源的優(yōu)先級(jí)。在優(yōu)先級(jí)高的中斷請(qǐng)求處理完了以后。再響應(yīng)優(yōu)先級(jí)低的中斷請(qǐng)求。中斷嵌套:當(dāng)CPU正在處理一個(gè)優(yōu)先級(jí)低的中斷請(qǐng)求的時(shí),如果發(fā)生另一個(gè)優(yōu)先級(jí)比它高的中斷請(qǐng)求,CPU能暫停當(dāng)前處理的中斷,轉(zhuǎn)去處理優(yōu)先級(jí)高的中斷請(qǐng)求,待處理完以后,再回到原來(lái)正在處理的低級(jí)中斷程序,這種高級(jí)中斷源能中斷低級(jí)中斷源的中斷處理稱為中斷嵌套。8051中斷8051單片機(jī)有5個(gè)中斷源2個(gè)中斷優(yōu)先級(jí)(2級(jí)中斷嵌套),優(yōu)先級(jí)可通過(guò)編程實(shí)現(xiàn)IE(中斷允許寄存器):中斷源的中斷請(qǐng)求是否能得到響應(yīng),受IE的控制;IP(中斷優(yōu)先級(jí)寄存器):各個(gè)中斷源的優(yōu)先級(jí)可由IP的各位來(lái)確定;同一優(yōu)先級(jí)中的各中斷源同時(shí)請(qǐng)求中斷時(shí),由內(nèi)部的查詢邏輯來(lái)確定響應(yīng)的次序。8051中斷源8051五個(gè)中斷源INT0中斷(P3.2)T0中斷(P3.4)INT1中斷(P3.3)T1中斷(P3.5)串行中斷(P3.0、P3.1)8051中斷入口(ROM)地址和優(yōu)先級(jí)中斷源中斷號(hào)(n)中斷入口地址(8n+3)中斷優(yōu)先級(jí)INT0中斷00003H高低T0中斷1000BHINT1中斷20013HT1中斷3001BH串行口中斷40023HT2中斷5002BH例1如圖按下按鈕,對(duì)輸出燈取反查詢方式中斷方式8051INT0中斷機(jī)理當(dāng)INT0引腳輸入如下信號(hào):下降沿(IT0=1)或低電平(IT0=0)CPU自動(dòng)(硬件)產(chǎn)生中斷標(biāo)志(IE0=1)此時(shí)若INT0中斷允許(使能EX0=1,EA=1),則CPU立即停止當(dāng)前程序,跳轉(zhuǎn)到INT0對(duì)應(yīng)的中斷入口(ROM保留地址0x0003)執(zhí)行中斷服務(wù)程序(中斷服務(wù)程序后CPU自動(dòng)對(duì)中斷標(biāo)志清零:IE0=0),待INT0中斷服務(wù)程序執(zhí)行完畢后再回原執(zhí)行程序處;若INT0中斷未允許,則程序不能跳轉(zhuǎn)到INT0中斷入口,不執(zhí)行中斷服務(wù)程序(中斷標(biāo)志IE0不能自動(dòng)清0)。問(wèn)提:中斷標(biāo)志IE0的產(chǎn)生與中斷使能是否有關(guān)?中斷服務(wù)程序常見(jiàn)問(wèn)題中斷服務(wù)程序代碼過(guò)長(zhǎng),占了過(guò)多的進(jìn)程;定義全局標(biāo)志變量:中斷里設(shè)置標(biāo)志,主程序根據(jù)標(biāo)志執(zhí)行程序,完成后清除該標(biāo)志中斷端口不夠用(8051只有2個(gè)中斷INT0、INT1);更換MPU會(huì)擴(kuò)展INT0中斷方式執(zhí)行流程#include"reg51.h"unsignedchari=0;/**********int0中斷服務(wù)程序**********/voidINT0_ISR(void)interrupt0{ delay(200); if((P3_2==0)

P1=++i; }/**********主函數(shù)*******************/voidmain(void){IT0=1;//下降延中斷

EX0=1;//int0中斷使能

EA=1;//總中斷使能

while(1){;}//等待中斷}主程序中斷響應(yīng)初始化中斷等待中斷中斷服務(wù)程序返回中斷自動(dòng)清中斷標(biāo)志……INT0查詢方式voidmain(void){IT0=1;//EX0=1;EA=1;while(1){//查詢方式1:if(IE0==1){IE0=0;//手動(dòng)清中斷標(biāo)志

//P1=++I;……}_------P2=LED_seg[buf[i]]P0=LED_bit[i]I++;If(I==6) I=0delay(500);}}voidmain(void){while(1){//查詢方式2:while(IE0==0){ ;//等待INT0外部中斷}IE0=0;//手動(dòng)清中斷標(biāo)志//……}}8051中斷系統(tǒng)與中斷有關(guān)的SFR注:*表示可以位尋址SFRD7D6D5D4D3D2D1D0地址*IP--PT2PSPT1PX1PT0PX0B8H*IEEA-ET2ESET1EX1ET0EX0A8HTMODGATEC/T#M1M0GATEC/T#M1M089H*TCONTF1TR1TF0TR0IE1IT1IE0IT088HSCONSM0SM1SM2RENTB8RB8TIRI98HPCONSMOD-------87HTCON:定時(shí)/計(jì)數(shù)器控制寄存器TF1、TF0:T1、T0溢出標(biāo)志TR1、TR0:T1、T0啟動(dòng)控制位(TR=1:啟動(dòng)定時(shí)器)IE1、IE0:INT1、INT0中斷標(biāo)志IT1、IT0:INT1、INT0觸發(fā)方式控制位(IT=1:下降沿觸發(fā),IT=0:低電平觸發(fā))TF1、TF0、IE1、IE0都具有自動(dòng)清零功能。D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0SCON:串行口控制寄存器SM0SM1串行模式選擇SM2多機(jī)通訊允許位:方式0時(shí),此位應(yīng)該為0;模式1時(shí),當(dāng)接收到停止位時(shí),該位將置位;方式2或方式3時(shí),當(dāng)接收的第9位數(shù)據(jù)為1時(shí),將置位REN串行接收允許位TB8在模式2和模式3中,將被發(fā)送數(shù)據(jù)的第9位RB8:在方式0中,該位不起作用;在方式1中該位為接收數(shù)據(jù)的停止位;在方式2和方式3中為接收數(shù)據(jù)的第9位TI串行發(fā)送結(jié)束標(biāo)志,由軟件清零RI串行接收結(jié)束標(biāo)志,由軟件清零D7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRIIE:中斷允許寄存器EA:使能標(biāo)志位。1:所有中斷使能;0:禁止所有中斷ET2:T2中斷使能ES:串行通信中斷使能ET1:T1中斷使能EX1:INT1中斷使能ET0:T0中斷使能EX0:INT0中斷使能D7D6D5D4D3D2D1D0EA-ET2ESET1EX1ET0EX0IP:中斷優(yōu)先級(jí)寄存器-保留-保留PT2:T2中斷優(yōu)先級(jí)PS:串行通信中斷優(yōu)先級(jí)PT1:T1中斷優(yōu)先級(jí)PX1:INT1優(yōu)先級(jí)PT0:T0中斷優(yōu)先級(jí)PX0:INT0優(yōu)先級(jí)D7D6D5D4D3D2D1D0--PT2PSPT1PX1PT0PX0與中斷有關(guān)的各位PX0、PT0、PX1、PT1、PSEX0、ET0、EX1、ET1、ES、EAIT0、IT1TR0、TR1IE0、IE1、TF0、TF1、TI、RI以上各位可位尋址,且均為高電平有效8051外部中斷編程示例#include"reg51.h"http://C51中斷程序框架/**********int0中斷服務(wù)程序**********/voidINT0_ISR(void)interrupt0using0{//中斷服務(wù)程序

//……}/**********主函數(shù)*******************/voidmain(void){IT0=1;EX0=1;EA=1;//打開中斷源

while(1);//等待中斷}中斷服務(wù)函數(shù)與寄存器的定義為了滿足在C語(yǔ)言源程序中直接編寫中斷服務(wù)程序的要求,C51編譯器對(duì)函數(shù)的定義進(jìn)行了擴(kuò)展,增加了一個(gè)擴(kuò)展關(guān)鍵字interrupt。它是函數(shù)定義時(shí)的一個(gè)選項(xiàng),加上這個(gè)選項(xiàng)即可將一個(gè)函數(shù)定義成中斷服務(wù)函數(shù)。定義格式為:

函數(shù)類型函數(shù)名(形式參數(shù)表)[interruptn][usingn]中斷服務(wù)函數(shù)與寄存器的定義函數(shù)類型函數(shù)名(形式參數(shù)表)[interruptn][usingn]關(guān)鍵字interrupt后面的n是中斷號(hào),n的范圍為0-31。編譯器從8n+3處產(chǎn)生中斷向向量,具體的中斷號(hào)n和中斷向量取決于8051單片機(jī)芯片型號(hào),常用中斷源和中斷向量如表所示。中斷號(hào)n中斷源中斷向量8n+30INT00003H1T0000BH2INT10013H3T1001BH4串行口0023H中斷服務(wù)函數(shù)與寄存器的定義工作寄存器:8051片內(nèi)RAM中有4個(gè)工作寄存器組,每個(gè)寄存器組中含8個(gè)工作寄存器(R0~R7)。C51編譯器擴(kuò)展了一個(gè)關(guān)鍵字using,專門用來(lái)選擇8051單片機(jī)的工作寄存器組。在定義一個(gè)函數(shù)時(shí),using后面的n是一個(gè)0-3的常數(shù),分別表示4個(gè)功能完全一樣的工作寄存器組。在定義一個(gè)函數(shù)時(shí),using是一個(gè)選項(xiàng),若缺省編譯器自動(dòng)分配一個(gè)寄存器組作絕對(duì)寄存器組訪問(wèn)。需要注意的是,關(guān)鍵字using和interrupt的后面都不允許跟帶運(yùn)算符的表達(dá)式。中斷服務(wù)函數(shù)與寄存器的定義voidINT0_ISR(void)interrupt0{}voidTIMER0_ISR(void)interrupt1{}voidINT1_ISR(void)interrupt2{}voidTIMER1_ISR(void)interrupt3{}voidUART_ISR(void)interrupt4{}

中斷服務(wù)函數(shù)與寄存器的定義_KeilC51命令DEFINEBUTTON(定義按鈕)命令定義:DEFINEBUTTON“按鈕名”,“命令”在Debug-FunctionEditor(OpenIniFile)中定義外中斷按鈕:

definebutton"INT0(P3.2)","PORT3=PORT3^0x04"definebutton"T0(P3.4)","PORT3=PORT3^0x10"definebutton"INT1(P3.3)","PORT3=PORT3^0x08"definebutton"T1(P3.5)","PORT3=PORT3^0x20"

每按鈕一次對(duì)P3.2取反刪除:KILLBUTTONn>definebutton“clr

drtr”,”dptr=0”>killbutton1中斷服務(wù)函數(shù)與寄存器的定義_KeilC51命令EVAL>EVAL-(1/256)0x00>EVAL-(256/256)0xFF>PORT30xFF>ex0_isr_counter詢問(wèn)變量的值中斷如何擴(kuò)充1定時(shí)器中斷作為外部中斷使用

把8051的T1、T0用作對(duì)外部脈沖計(jì)數(shù)方式。每當(dāng)P3.4(T0)或P3.3(T1)引腳上發(fā)生負(fù)跳變時(shí),T1和T0的計(jì)數(shù)器加1。利用這個(gè)特性,可以把P3.4和P3.3引腳作為外部中斷請(qǐng)求輸入線,而定時(shí)器的溢出中斷作為外部中斷請(qǐng)求標(biāo)志。

T0(P3.4)+Vcc中斷如何擴(kuò)充1定時(shí)器中斷作為外部中斷使用(軟件)

定時(shí)器T1對(duì)外部計(jì)數(shù)/*TH1、TL1采用16進(jìn)制賦值*/voidint0(void)interrupt3{

/*中斷服務(wù)程序*/

}voidmain(void){TMOD=(TMOD&0x0f)|0x60;ET1=1;EA=1;TR1=1;TH1=0xFF;/*TH1=-1/256-1;*/TL1=0xFF;/*TL1=-1%256;*/while(1);}T1(P3.2)中斷如何擴(kuò)充2中斷和查詢結(jié)合的方式中斷如何擴(kuò)充2#include<reg51.h>sbitLED_A=P1^0;sbitLED_B=P1^1;sbitLED_C=P1^2;sbitIA=P1^3;sbitIB=P1^4;sbitIC=P1^5;中斷如何擴(kuò)充2voidmain(void){IT0=1; IT1=1; EX0=1; EX1=1; EA=1; LED_A=0;LED_B=0;LED_C=0; IA=1;IB=1;IC=1; while(1);}中斷如何擴(kuò)充2voidint0(void)interrupt0{LED_A=0;LED_B=0;LED_C=0; IE1=0; EX1=1;}voidint1(void)interrupt2{ EX1=0; if(IA==0)LED_A=1; elseif(IB==0)LED_B=1; elseif(IC==0)LED_C=1; }中斷如何擴(kuò)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論