




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第6章C51中斷編程一、中斷1.概念:所謂中斷,是指在計算機(jī)執(zhí)行程序的過程中,當(dāng)出現(xiàn)某種情況,如發(fā)生緊急事件或其他情況時,由服務(wù)對象向CPU發(fā)出中斷請求信號,要求CPU暫時中斷當(dāng)前程序的執(zhí)行,而轉(zhuǎn)去執(zhí)行相應(yīng)的處理程序,待處理程序執(zhí)行完畢后,再返回來繼續(xù)執(zhí)行原來被中斷的程序。2看電視中斷處理中斷請求實際生活中斷返回電話鈴響接聽電話主程序計算機(jī)事件發(fā)生事件處理主程序看電視2.中斷系統(tǒng)89C51中斷系統(tǒng)共有5個中斷請求源:(1)——外部中斷請求0,中斷請求信號由引腳輸入,中斷請求標(biāo)志為IE0。(2)——外部中斷請求1,中斷請求信號由
引腳輸入,中斷請求標(biāo)志為IE1。(3)定時器/計數(shù)器T0計數(shù)溢出發(fā)出的中斷請求,中斷請求標(biāo)志為TF0。(4)定時器/計數(shù)器T1計數(shù)溢出發(fā)出的中斷請求,中斷請求標(biāo)志為TF1。(5)串行口中斷請求,中斷請求標(biāo)志為發(fā)送中斷TI或接收中斷RI。34中斷系統(tǒng)結(jié)構(gòu)示意圖中斷請求標(biāo)志寄存器5個中斷請求源的中斷請求標(biāo)志分別由定時器/計數(shù)器的控制寄存器TCON和串行口控制寄存器SCON的相應(yīng)位鎖存。5中斷允許寄存器IEAT89C51的對各中斷源的開放或屏蔽,是由中斷允許寄存器IE控制的。6中斷優(yōu)先級寄存器IP中斷請求源有兩個中斷優(yōu)先級,可實現(xiàn)兩級中斷嵌套。兩條基本規(guī)則:(1)低優(yōu)先級可被高優(yōu)先級中斷,高優(yōu)先級不能低優(yōu)先級中斷。(2)任何一種中斷一旦得到響應(yīng),不會再被它的同級中斷源所中斷。7中斷響應(yīng)的過程:首先由硬件自動生成一條長調(diào)用指令“LCALLaddr16”。就是程序存儲區(qū)中相應(yīng)的中斷入口地址。例如,對于外部中斷1的響應(yīng),硬件自動生成的長調(diào)用指令為
LCALL0013H首先將程序計數(shù)器PC的內(nèi)容壓入堆棧以保護(hù)斷點,再將中斷入口地址裝入PC,使程序轉(zhuǎn)向響應(yīng)中斷請求的中斷入口地址。8各中斷源服務(wù)程序的入口地址:兩個中斷入口間只相隔8字節(jié),難以安放一個完整的中斷服務(wù)程序。因此,通常在中斷入口地址處放置一條無條件轉(zhuǎn)移指令,使程序執(zhí)行轉(zhuǎn)向中斷服務(wù)程序入口。910二、
C51中斷服務(wù)函數(shù)的定義 由于標(biāo)準(zhǔn)C沒有處理單片機(jī)中斷的定義,為直接編寫中斷服務(wù)程序,C51編譯器對函數(shù)的定義進(jìn)行了擴(kuò)展,增加了一個擴(kuò)展關(guān)鍵字interrupt,使用該關(guān)鍵字可以將一個函數(shù)定義成中斷服務(wù)函數(shù)。
由于C51編譯器在編譯時對聲明為中斷服務(wù)程序的函數(shù)自動添加了相應(yīng)的現(xiàn)場保護(hù)、阻斷其他中斷、返回時恢復(fù)現(xiàn)場等處理的程序段,因而在編寫中斷服務(wù)函數(shù)時可不必考慮這些問題,減輕了用匯編語言編寫中斷服務(wù)程序的繁瑣程度,而把精力放在如何處理引發(fā)中斷請求的事件上。11 中斷服務(wù)函數(shù)的一般形式為: 函數(shù)類型
函數(shù)名(形式參數(shù)表)[interruptn][usingn] 關(guān)鍵字interrupt后面的
n是中斷號,對于89C51,取值為0~4,編譯器從8×n+3處產(chǎn)生中斷向量。89C51中斷源對應(yīng)的中斷號和中斷向量表:中斷號n中斷源中斷向量(8×n+3)0外部中斷00003H1定時器0000BH2外部中斷10013H3定時器1001BH4串行口0023H其他值保留8×n+312
AT89C51在內(nèi)部RAM中有4個工作寄存器區(qū),每個寄存器區(qū)包含8個工作寄存器(R0-R7)。C51擴(kuò)展了一個關(guān)鍵字using,專門用來選擇AT89S51的4個不同的工作寄存器區(qū)。在定義一個函數(shù)時,using是一個選項,如果不選用該項,則由編譯器選擇一個寄存器區(qū)作為絕對寄存器區(qū)訪問。 關(guān)鍵字using對函數(shù)目標(biāo)代碼的影響如下: 在中斷函數(shù)的入口處將當(dāng)前工作寄存器區(qū)內(nèi)容保護(hù)到堆棧中,函數(shù)返回前將被保護(hù)的寄存器區(qū)的內(nèi)容從堆棧中恢復(fù)。 使用關(guān)鍵字using在函數(shù)中確定一個工作寄存器區(qū)時必須小心,要保證工作寄存器區(qū)切換都只在指定的控制區(qū)域中發(fā)生,否則將產(chǎn)生不正確的函數(shù)結(jié)果。還要注意,帶using屬性的函數(shù)原則上不能返回bit類型的值,且關(guān)鍵字using和關(guān)鍵字interrupt都不允許用于外部函數(shù),另外也都不允許有一個帶運算符的表達(dá)式。1314 例如,外中斷1(
)的中斷服務(wù)函數(shù)書寫如下:voidint1()interrupt2using0/*中斷號n=2,選擇0區(qū)工作寄存器區(qū)*/ 編寫AT89S51中斷程序時,應(yīng)遵循以下規(guī)則:(1)中斷函數(shù)沒有返回值,如果定義了一個返回值,將會得到不正確的結(jié)果。因此建議在定義中斷函數(shù)時,將其定義為void類型,以明確說明沒有返回值。(2)中斷函數(shù)不能進(jìn)行參數(shù)傳遞,如果中斷函數(shù)中包含任何參數(shù)聲明都將導(dǎo)致編譯出錯。15(3)在任何情況下都不能直接調(diào)用中斷函數(shù),否則會產(chǎn)生編譯錯誤。因為中斷函數(shù)的返回是由指令RETI完成的。RETI指令會影響89C51中的硬件中斷系統(tǒng)內(nèi)的不可尋址的中斷優(yōu)先級寄存器的狀態(tài)。如果在沒有實際的中斷請求的情況下,直接調(diào)用中斷函數(shù),也就不會執(zhí)行RETI指令,其操作結(jié)果有可能產(chǎn)生一個致命的錯誤。(4)如果在中斷函數(shù)中再調(diào)用其他函數(shù),則被調(diào)用的函數(shù)所使用的寄存器區(qū)必須與中斷函數(shù)使用的寄存器區(qū)不同。16三、C51中斷程序的編寫為響應(yīng)中斷請求而進(jìn)行中斷處理的程序稱為中斷程序。由中斷初始化程序和中斷服務(wù)程序兩部分組成。中斷初始化程序的位置位于主程序中,主要包括選擇外部中斷的觸發(fā)方式、開中斷、設(shè)置中斷優(yōu)先級等。例:控制8只LED交替閃爍的電路17 【例】在單片機(jī)系統(tǒng)的P1口上接有8只LED,LED的陽極接+5V,陰極接P1口的引腳。當(dāng)P1口某一口線輸出為0時,將LED點亮。在外部中斷0輸入腳P3.2(
)引腳接上拉電阻并接有一只按鈕開關(guān)K1。用K1按鈕來產(chǎn)生外部中斷0的輸入信號。接口電路如圖所示。 要求將外部中斷0設(shè)為負(fù)跳沿觸發(fā)。在程序剛啟動時,P1口上的8只LED亮。按一次按鈕開關(guān)K1,使引腳P3.2接地,產(chǎn)生一個外中斷0的中斷請求,在中斷服務(wù)程序中,讓低4位LED和高4位LED交替閃爍。參考程序:18#include<reg51.h>voidDelay(unsignedinti) /*定義延時函數(shù)Delay(),i是形式參數(shù),不能賦初值*/{ unsignedintj; for(;i>0;i--) for(j=0;j<333;j++) /*晶振為12MHz*/ {;} /*空函數(shù)*/}voidmain() /*主函數(shù)*/{ EA=1; /*總中斷允許*/ EX0=1; /*外部中斷0中斷允許*/ IT0=1;/*選擇外部中斷0為跳沿觸發(fā)方式,也可改為IT0=0電平觸發(fā)方式*/ while(1)/*循環(huán)*/ {P1=0;}/*P1口的8只LED全亮*/}1920voidint0()interrupt0using0/*外中斷0的中斷服務(wù)函數(shù)*/{unsignedintk;
EX0=0; /*禁止外部中斷0中斷*/ for(k=0;k<10;k++) /*循環(huán)10次*/ { P1=0x0f; /*低
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 叉車停車考試題及答案
- 基本管理面試題及答案
- 2025年貴陽市清鎮(zhèn)市招聘中小學(xué)教師考試筆試試題(含答案)
- 2025年廣東公司招聘考試試題(含答案)
- 2025年福州市潤樓教育科技集團(tuán)有限公司招聘考試試題(含答案)
- 醫(yī)院院感培訓(xùn)試題及答案
- 2025年新進(jìn)人員輻射安全與防護(hù)考核試題及答案
- 2024年遼寧國家公務(wù)員申論考試真題及答案-副省卷
- 北京法律知識培訓(xùn)班課件
- 數(shù)字化物流商業(yè)運營 課后習(xí)題答案-模塊3
- 混凝土養(yǎng)護(hù)方案
- 高質(zhì)量SCI論文入門必備從選題到發(fā)表全套課件
- 長螺旋鉆孔咬合樁基坑支護(hù)施工工法
- 庫欣綜合征英文教學(xué)課件cushingsyndrome
- 220kv升壓站質(zhì)量評估報告
- C語言程序設(shè)計(第三版)全套教學(xué)課件
- 未來醫(yī)美的必然趨勢課件
- 附件1發(fā)電設(shè)備備品備件驗收及倉儲保養(yǎng)技術(shù)標(biāo)準(zhǔn)
- 12、信息通信一體化調(diào)度運行支撐平臺(SG-I6000)第3-8部分:基礎(chǔ)平臺-系統(tǒng)安全防護(hù)
- 大連市勞動用工備案流程
- 市環(huán)境監(jiān)測站權(quán)力運行內(nèi)部流程圖
評論
0/150
提交評論