版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第四章MCS-51單片機(jī)的內(nèi)部資源及其編程單片機(jī)技術(shù)與應(yīng)用4-2、外部中斷8051外部中斷中斷中斷源中斷優(yōu)先級中斷嵌套8051外部中斷中斷:當(dāng)CPU正處理某項事務(wù)時,若外界或內(nèi)部發(fā)生緊急事件,要求CPU暫停正在處理的工作轉(zhuǎn)而去處理這個緊急事件,待處理完以后再回到原來被中斷的地方,繼續(xù)執(zhí)行原來被中斷了的程序,這樣的過程稱為中斷。(堆棧)中斷源:向CPU提出中斷請求的源稱為中斷源外部跳變信號(下降延)外部低電平等(0)8051外部中斷中斷優(yōu)先級:當(dāng)幾個中斷源同時請求中斷時,CPU應(yīng)優(yōu)先響應(yīng)最需緊急處理的中斷請求。為此,需要規(guī)定各個中斷源的優(yōu)先級。在優(yōu)先級高的中斷請求處理完了以后。再響應(yīng)優(yōu)先級低的中斷請求。中斷嵌套:當(dāng)CPU正在處理一個優(yōu)先級低的中斷請求的時,如果發(fā)生另一個優(yōu)先級比它高的中斷請求,CPU能暫停當(dāng)前處理的中斷,轉(zhuǎn)去處理優(yōu)先級高的中斷請求,待處理完以后,再回到原來正在處理的低級中斷程序,這種高級中斷源能中斷低級中斷源的中斷處理稱為中斷嵌套。8051中斷8051單片機(jī)有5個中斷源2個中斷優(yōu)先級(2級中斷嵌套),優(yōu)先級可通過編程實現(xiàn)IE(中斷允許寄存器):中斷源的中斷請求是否能得到響應(yīng),受IE的控制;IP(中斷優(yōu)先級寄存器):各個中斷源的優(yōu)先級可由IP的各位來確定;同一優(yōu)先級中的各中斷源同時請求中斷時,由內(nèi)部的查詢邏輯來確定響應(yīng)的次序。8051中斷源8051五個中斷源INT0中斷(P3.2)T0中斷(P3.4)INT1中斷(P3.3)T1中斷(P3.5)串行中斷(P3.0、P3.1)8051中斷入口(ROM)地址和優(yōu)先級中斷源中斷號(n)中斷入口地址(8n+3)中斷優(yōu)先級INT0中斷00003H高低T0中斷1000BHINT1中斷20013HT1中斷3001BH串行口中斷40023HT2中斷5002BH例1如圖按下按鈕,對輸出燈取反查詢方式中斷方式8051INT0中斷機(jī)理當(dāng)INT0引腳輸入如下信號:下降沿(IT0=1)或低電平(IT0=0)CPU自動(硬件)產(chǎn)生中斷標(biāo)志(IE0=1)此時若INT0中斷允許(使能EX0=1,EA=1),則CPU立即停止當(dāng)前程序,跳轉(zhuǎn)到INT0對應(yīng)的中斷入口(ROM保留地址0x0003)執(zhí)行中斷服務(wù)程序(中斷服務(wù)程序后CPU自動對中斷標(biāo)志清零:IE0=0),待INT0中斷服務(wù)程序執(zhí)行完畢后再回原執(zhí)行程序處;若INT0中斷未允許,則程序不能跳轉(zhuǎn)到INT0中斷入口,不執(zhí)行中斷服務(wù)程序(中斷標(biāo)志IE0不能自動清0)。問提:中斷標(biāo)志IE0的產(chǎn)生與中斷使能是否有關(guān)?中斷服務(wù)程序常見問題中斷服務(wù)程序代碼過長,占了過多的進(jìn)程;定義全局標(biāo)志變量:中斷里設(shè)置標(biāo)志,主程序根據(jù)標(biāo)志執(zhí)行程序,完成后清除該標(biāo)志中斷端口不夠用(8051只有2個中斷INT0、INT1);更換MPU會擴(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ù)程序返回中斷自動清中斷標(biāo)志……INT0查詢方式voidmain(void){IT0=1;//EX0=1;EA=1;while(1){//查詢方式1:if(IE0==1){IE0=0;//手動清中斷標(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;//手動清中斷標(biāo)志//……}}8051中斷系統(tǒng)與中斷有關(guān)的SFR注:*表示可以位尋址SFRD7D6D5D4D3D2D1D0地址*IP--PT2PSPT1PX1PT0PX0B8H*IEEA-ET2ESET1EX1ET0EX0A8HTMODGATEC/T#M1M0GATEC/T#M1M089H*TCONTF1TR1TF0TR0IE1IT1IE0IT088HSCONSM0SM1SM2RENTB8RB8TIRI98HPCONSMOD-------87HTCON:定時/計數(shù)器控制寄存器TF1、TF0:T1、T0溢出標(biāo)志TR1、TR0:T1、T0啟動控制位(TR=1:啟動定時器)IE1、IE0:INT1、INT0中斷標(biāo)志IT1、IT0:INT1、INT0觸發(fā)方式控制位(IT=1:下降沿觸發(fā),IT=0:低電平觸發(fā))TF1、TF0、IE1、IE0都具有自動清零功能。D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0SCON:串行口控制寄存器SM0SM1串行模式選擇SM2多機(jī)通訊允許位:方式0時,此位應(yīng)該為0;模式1時,當(dāng)接收到停止位時,該位將置位;方式2或方式3時,當(dāng)接收的第9位數(shù)據(jù)為1時,將置位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)先級寄存器-保留-保留PT2:T2中斷優(yōu)先級PS:串行通信中斷優(yōu)先級PT1:T1中斷優(yōu)先級PX1:INT1優(yōu)先級PT0:T0中斷優(yōu)先級PX0:INT0優(yōu)先級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語言源程序中直接編寫中斷服務(wù)程序的要求,C51編譯器對函數(shù)的定義進(jìn)行了擴(kuò)展,增加了一個擴(kuò)展關(guān)鍵字interrupt。它是函數(shù)定義時的一個選項,加上這個選項即可將一個函數(shù)定義成中斷服務(wù)函數(shù)。定義格式為:
函數(shù)類型函數(shù)名(形式參數(shù)表)[interruptn][usingn]中斷服務(wù)函數(shù)與寄存器的定義函數(shù)類型函數(shù)名(形式參數(shù)表)[interruptn][usingn]關(guān)鍵字interrupt后面的n是中斷號,n的范圍為0-31。編譯器從8n+3處產(chǎn)生中斷向向量,具體的中斷號n和中斷向量取決于8051單片機(jī)芯片型號,常用中斷源和中斷向量如表所示。中斷號n中斷源中斷向量8n+30INT00003H1T0000BH2INT10013H3T1001BH4串行口0023H中斷服務(wù)函數(shù)與寄存器的定義工作寄存器:8051片內(nèi)RAM中有4個工作寄存器組,每個寄存器組中含8個工作寄存器(R0~R7)。C51編譯器擴(kuò)展了一個關(guān)鍵字using,專門用來選擇8051單片機(jī)的工作寄存器組。在定義一個函數(shù)時,using后面的n是一個0-3的常數(shù),分別表示4個功能完全一樣的工作寄存器組。在定義一個函數(shù)時,using是一個選項,若缺省編譯器自動分配一個寄存器組作絕對寄存器組訪問。需要注意的是,關(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"
每按鈕一次對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詢問變量的值中斷如何擴(kuò)充1定時器中斷作為外部中斷使用
把8051的T1、T0用作對外部脈沖計數(shù)方式。每當(dāng)P3.4(T0)或P3.3(T1)引腳上發(fā)生負(fù)跳變時,T1和T0的計數(shù)器加1。利用這個特性,可以把P3.4和P3.3引腳作為外部中斷請求輸入線,而定時器的溢出中斷作為外部中斷請求標(biāo)志。
T0(P3.4)+Vcc中斷如何擴(kuò)充1定時器中斷作為外部中斷使用(軟件)
定時器T1對外部計數(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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 江蘇省常州市2024~2025學(xué)年高一上學(xué)期期中考試歷史試題(解析版)
- 湖南省邵陽市雙清區(qū)昭陵實驗學(xué)校等多校聯(lián)考2023-22024學(xué)年高二上學(xué)期期末考試歷史試題(解析版)
- 黑龍江省哈爾濱市六校2023-2024學(xué)年高三上學(xué)期期末模擬歷史試卷(解析版)
- 百年二人臺知到智慧樹章節(jié)測試課后答案2024年秋內(nèi)蒙古科技大學(xué)
- 四川工程職業(yè)技術(shù)學(xué)院《近距離無線通信技術(shù)課程設(shè)計》2023-2024學(xué)年第一學(xué)期期末試卷
- 柴油清倉出售合同范例
- 項目食品開發(fā)合同范例
- 版權(quán)設(shè)計合同范例
- 贈與合同范例規(guī)定
- 四川大學(xué)《工程項目管理課程設(shè)計B》2023-2024學(xué)年第一學(xué)期期末試卷
- 全員營銷方案實施細(xì)則
- 19S406建筑排水管道安裝-塑料管道
- 八年級下冊道德與法治期末復(fù)習(xí)-測試卷含答案
- 注塑車間工藝流程
- 八年級上語文課本同步規(guī)范漢字字帖
- 《機(jī)械制圖》期末考試題庫388題(含答案)
- 車間生產(chǎn)中的問題分析與解決方案
- 消化性潰瘍.課件
- 2024年北京中考記敘文閱讀專題03 小說閱讀(含答案解析)
- 人力資源部副經(jīng)理個人述職報告
- 小學(xué)一年級科學(xué)(上冊)期末試卷含參考答案
評論
0/150
提交評論