單片機(jī)應(yīng)用技術(shù)基礎(chǔ)(C語言)課件:定時與中斷系統(tǒng)_第1頁
單片機(jī)應(yīng)用技術(shù)基礎(chǔ)(C語言)課件:定時與中斷系統(tǒng)_第2頁
單片機(jī)應(yīng)用技術(shù)基礎(chǔ)(C語言)課件:定時與中斷系統(tǒng)_第3頁
單片機(jī)應(yīng)用技術(shù)基礎(chǔ)(C語言)課件:定時與中斷系統(tǒng)_第4頁
單片機(jī)應(yīng)用技術(shù)基礎(chǔ)(C語言)課件:定時與中斷系統(tǒng)_第5頁
已閱讀5頁,還剩37頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

定時與中斷系統(tǒng)任務(wù)5定時亮滅的小燈任務(wù)6人工控制的小燈

任務(wù)5定時亮滅的小燈

1.任務(wù)目的通過定時亮滅的小燈電路的制作和軟件設(shè)計(jì),了解單片機(jī)的定時/計(jì)數(shù)器系統(tǒng),熟悉定時/計(jì)數(shù)器的四種工作方式,掌握相關(guān)特殊功能寄存器的含義,掌握定時/計(jì)數(shù)器的初值計(jì)算和初始化方法。2.任務(wù)要求控制單片機(jī)P2口所接的8個LED管,使它們每隔1s亮滅變化一次。3.電路設(shè)計(jì)電路設(shè)計(jì)如圖4.1所示。4.程序設(shè)計(jì)硬件電路中選用的晶振為12?MHz,可以用T0的工作方式1定時50ms,1?s?=?20?×?50ms,那么循環(huán)20次,即可達(dá)到定義1?s的目的,每隔1?s改變一次P2口的值就可實(shí)現(xiàn),程序如下:/*利用定時計(jì)數(shù)器,查詢方式實(shí)現(xiàn)P2口燈定時亮滅*/#include<reg51.h>voidtimer1s(); //聲明定時1s的函數(shù)voidmain() //主函數(shù){P2=0xff;TMOD=0x01; //設(shè)置定時/計(jì)數(shù)器0工作于方式1,用于定時while(1) //每隔1s改變P2口燈的亮滅狀態(tài){timer1s();P2=~P2;}}voidtimer1s() //定義定時1s的函數(shù){unsignedchari;i=0;TH0=(65536-50000)/256; //設(shè)置定時/計(jì)數(shù)器0的計(jì)數(shù)初值,以確定定時時間50msTL0=(65536-50000)%256;TR0=1; //啟動定時while(i<20) //1s時間未到{while(TF0==0); //判斷定時時間50ms到了沒有,沒有到則等待i++; //定時時間到,累加變量加1TH0=(65536-50000)/256; //重裝計(jì)數(shù)初值TL0=(65536-50000)%256;TF0=0; //溢出標(biāo)志清零}}

4.1C語言的函數(shù)

4.1.1C51語言程序的基本結(jié)構(gòu)在C51語言中一個較大的程序一般由若干個小的程序模塊組成,每一個小的程序模塊用來實(shí)現(xiàn)一個特定的功能,這樣小的程序模塊就是由函數(shù)來完成的。函數(shù)是C語言程序的重要組成部分,使用它可以方便地實(shí)現(xiàn)程序的模塊化設(shè)計(jì),這樣可以使程序的結(jié)構(gòu)清晰,可讀性好,而且易于擴(kuò)充。一個完整的C51程序是由一個主函數(shù)和若干個其他函數(shù)組成的,主函數(shù)調(diào)用其他函數(shù),其他函數(shù)也可以互相調(diào)用。同一個函數(shù)可以被一個或多個函數(shù)調(diào)用任意多次。1.指定頭文件指定頭文件的方式有如下兩種:#include<頭文件的文件名>#include“頭文件的文件名”2.聲明區(qū)聲明程序之中所使用的常數(shù)、變量、函數(shù),其作用域?qū)U(kuò)展到整個程序,包括主程序與所有函數(shù)。建議:若程序之中使用到函數(shù),則可在此先聲明所有使用到的函數(shù)。3.主函數(shù)主函數(shù)分為聲明區(qū)和程序區(qū),在聲明區(qū)里所聲明的常數(shù)、變量等,僅適用于主函數(shù)中,而不影響其他函數(shù)。4.函數(shù)函數(shù)是一種具有相對獨(dú)立的功能程序,其結(jié)構(gòu)與主函數(shù)類似。4.1.2函數(shù)分類從用戶使用角度來看,C51語言函數(shù)分為兩類:標(biāo)準(zhǔn)函數(shù)和用戶定義函數(shù)。1.標(biāo)準(zhǔn)函數(shù)標(biāo)準(zhǔn)函數(shù)也稱為標(biāo)準(zhǔn)庫函數(shù),是系統(tǒng)提供的已設(shè)計(jì)好的函數(shù),用戶不必自己定義這些函數(shù),就可以直接調(diào)用。KeilC51編譯器提供了100多個標(biāo)準(zhǔn)庫函數(shù)供用戶使用。標(biāo)準(zhǔn)庫函數(shù)中的每個函數(shù)都在相應(yīng)的頭文件“.h”中有原型聲明,因此如果程序中使用了哪個庫函數(shù),在程序開頭必須包含相應(yīng)的“.h”頭文件。如C51中常用的頭文件:#include"reg51.h" //MCS-51寄存器符號定義#include"absacc.h" //絕對地址訪問#include"ctype.h" //字符函數(shù)#include"string.h" //字符串處理#include"intrins.h" //指示編譯器產(chǎn)生嵌入式固有代碼的程序原型,如空函數(shù)nop()#include"math.h" //數(shù)學(xué)函數(shù)#include"stdio.h" //輸入輸出流函數(shù)2.用戶定義的函數(shù)用戶定義的函數(shù)是用戶根據(jù)自己的需要編寫的用來解決具體問題的函數(shù),用戶定義的函數(shù)必須先定義之后才能被調(diào)用。4.1.3函數(shù)定義函數(shù)定義的一般格式為類型說明符函數(shù)名(形式參數(shù)表){局部變量定義;函數(shù)體語句;}其中,“類型說明符”說明函數(shù)返回值的類型。返回值是指通過函數(shù)調(diào)用使主調(diào)函數(shù)能得到的一個確定的值,如果被調(diào)用函數(shù)有返回值,可以通過return語句返回給主調(diào)函數(shù);如果不要返回值,則可在函數(shù)名稱左邊指定為void,或根本不指定。“函數(shù)名”是函數(shù)的名字,是唯一標(biāo)識一個函數(shù)的名字,它的命名規(guī)則同變量完全一樣。在一個程序中不同函數(shù)的名字不能相同。從函數(shù)的形式上劃分,函數(shù)有無參函數(shù)和有參函數(shù)兩種形式。對有參函數(shù)來說,“形式參數(shù)表”給出函數(shù)被調(diào)用時傳入該函數(shù)里要處理的數(shù)據(jù)的形式參數(shù),可以傳入多個參數(shù),形式參數(shù)的類型必須說明;對無參函數(shù)來說,不要傳入?yún)?shù),則可在小括號內(nèi)選擇為void,或直接為空。“局部變量定義”是對在函數(shù)內(nèi)部使用的局部變量進(jìn)行定義。“函數(shù)體語句”是為完成該函數(shù)的特定功能而設(shè)置的各種語句。4.1.4函數(shù)調(diào)用C51語言程序中函數(shù)是可以互相調(diào)用的。所謂函數(shù)調(diào)用就是在一個函數(shù)體中引用另一個已經(jīng)定義了的函數(shù),前者稱為主調(diào)函數(shù),后者稱為被調(diào)用函數(shù)。C51語言中主調(diào)函數(shù)通過函數(shù)調(diào)用來使用函數(shù)。1.函數(shù)調(diào)用的格式函數(shù)調(diào)用的一般格式為函數(shù)名(實(shí)際參數(shù)表)其中“函數(shù)名”指出被調(diào)用的函數(shù);“實(shí)際參數(shù)表”中可以包含多個實(shí)際參數(shù),各個參數(shù)之間用逗號隔開。實(shí)際參數(shù)的作用是將它的值傳給被調(diào)用函數(shù)中的形式參數(shù)。2.函數(shù)調(diào)用的方式在C語言中可以采用三種方式完成函數(shù)的調(diào)用。(1)函數(shù)語句。在主調(diào)函數(shù)中將把函數(shù)調(diào)用作為一條語句。例如:display();這時不要求被調(diào)用函數(shù)返回一個確定的值,只要求函數(shù)完成一定的操作。(2)函數(shù)表達(dá)式。在主調(diào)函數(shù)中將函數(shù)調(diào)用作為一個運(yùn)算對象直接出現(xiàn)在一個表達(dá)式中,這種表達(dá)式稱為函數(shù)表達(dá)式。這時要求被調(diào)用函數(shù)返回一個確定的值以參加表達(dá)式的計(jì)算。例如:x=jianpanzhi();(3)函數(shù)參數(shù)。在主調(diào)函數(shù)中將函數(shù)調(diào)用作為另一個函數(shù)調(diào)用的實(shí)際參數(shù)。例如:M=max(a,max(a,b));其中函數(shù)調(diào)用max(a,b)放在另一個函數(shù)調(diào)用max(a,max(a,b))的實(shí)際參數(shù)表中,以其返回值作為另一個函數(shù)調(diào)用的實(shí)際參數(shù)。這種在調(diào)用一個函數(shù)的過程中又調(diào)用另外一個函數(shù)的方式,稱為嵌套函數(shù)調(diào)用。4.1.5函數(shù)聲明C語言編譯系統(tǒng)是由上往下編譯的。一般被調(diào)函數(shù)放在主調(diào)函數(shù)后面的話,前面就該有聲明,不然C語言由上往下的編譯系統(tǒng)將無法識別。正如變量必須先聲明后使用一樣,函數(shù)也必須在被調(diào)用之前先聲明,否則無法調(diào)用。函數(shù)的聲明可以與定義分離,要注意的是一個函數(shù)只能被定義一次,但可以被聲明多次。1.函數(shù)聲明格式類型說明符函數(shù)名(形式參數(shù)表);函數(shù)聲明由函數(shù)返回值數(shù)據(jù)類型、函數(shù)名和形式參數(shù)表組成。這三個元素被稱為函數(shù)原型,函數(shù)原型描述了函數(shù)的接口。定義函數(shù)的程序員提供函數(shù)原型,使用函數(shù)的程序員就只需要對函數(shù)原型編輯即可。注意函數(shù)聲明是一個語句,后面不可漏分號。2.函數(shù)聲明與函數(shù)定義的區(qū)別函數(shù)的聲明與函數(shù)的定義形式上十分相似,但是二者有著本質(zhì)上的不同。聲明是不開辟內(nèi)存的,僅僅告訴編譯器,要聲明的部分存在,要預(yù)留一點(diǎn)空間。定義則需要開辟內(nèi)存。函數(shù)的定義是一個完整的函數(shù)單元:(1)包含函數(shù)類型、函數(shù)名、形參及形參類型、函數(shù)體等。(2)在程序中,函數(shù)的定義只能有一次。(3)函數(shù)首部與花括號間不加分號。函數(shù)聲明只是對編譯系統(tǒng)的一個說明:(1)函數(shù)聲明是對定義的函數(shù)的返回值的類型說明,以通知系統(tǒng)在本函數(shù)中所調(diào)用的函數(shù)是什么類型。(2)不包含函數(shù)體。(3)調(diào)用幾次該函數(shù)就應(yīng)在各個主調(diào)函數(shù)中做相應(yīng)聲明。(4)函數(shù)聲明是一個說明語句,必須以分號結(jié)束。4.1.7函數(shù)編寫基本要求和原則1.函數(shù)編寫的基本要求(1)正確性:程序要實(shí)現(xiàn)設(shè)計(jì)要求的功能。

(2)穩(wěn)定性和安全性:程序運(yùn)行穩(wěn)定、可靠、安全。

(3)可測試性:程序便于測試和評價。

(4)規(guī)范/可讀性:程序書寫風(fēng)格、命名規(guī)則等符合規(guī)范。(5)擴(kuò)展性:代碼為下一次升級擴(kuò)展留有空間和接口。

(6)全局效率:軟件系統(tǒng)的整體效率高。

(7)局部效率:某個模塊/子模塊/函數(shù)的本身效率高。2.函數(shù)編原則(1)單個函數(shù)的規(guī)模盡量限制在200行以內(nèi)(不包括注釋和空行)。(2)分析模塊的功能及性能要求,據(jù)此來進(jìn)行模塊的函數(shù)劃分與組織。一個函數(shù)最好僅完成一件功能;為簡單功能編寫函數(shù),明確函數(shù)功能,精確(而不是近似)地實(shí)現(xiàn)函數(shù)設(shè)計(jì);函數(shù)的功能應(yīng)該是可以預(yù)測的,也就是只要輸入數(shù)據(jù)相同就應(yīng)產(chǎn)生同樣的輸出。(3)函數(shù)名應(yīng)準(zhǔn)確描述函數(shù)的功能,避免使用無意義或含義不清的動詞為函數(shù)命名。(4)函數(shù)的返回值要清楚明了,尤其是出錯返回值的意義要準(zhǔn)確無誤。不要把與函數(shù)返回值類型不同的變量,以編譯系統(tǒng)默認(rèn)的轉(zhuǎn)換方式或強(qiáng)制的轉(zhuǎn)換方式作為返回值返回。

(5)盡量不要將函數(shù)的參數(shù)作為工作變量。

4.2定時/計(jì)數(shù)器

4.2.1定時/計(jì)數(shù)器的結(jié)構(gòu)及工作原理1.定時/計(jì)數(shù)器的基本結(jié)構(gòu)8051單片機(jī)定時/計(jì)數(shù)器的結(jié)構(gòu)如圖4.3所示,由T0、T1、方式寄存器TMOD和控制寄存器TCON四大部分組成。兩個16位的定時/計(jì)數(shù)器分別由兩個專用寄存器組成,其中T0由TH0和TL0組成,T1由TH1和TL1組成。特殊功能寄存器TMOD和TCON用于定時/計(jì)數(shù)器的管理和控制。TMOD是工作方式寄存器,用于定時/計(jì)數(shù)器工作方式和功能的設(shè)置;TCON是定時/計(jì)數(shù)器控制寄存器,用于控制定時/計(jì)數(shù)器的啟動與停止。2.定時/計(jì)數(shù)器的工作原理單個定時/計(jì)數(shù)器的工作原理如圖4.4所示。3.定時/計(jì)數(shù)器的方式寄存器和控制寄存器單片機(jī)在使用定時/計(jì)數(shù)器功能時,通過對兩個與定時/計(jì)數(shù)器有關(guān)的寄存器中的內(nèi)容進(jìn)行設(shè)置,從而達(dá)到對定時/計(jì)數(shù)器進(jìn)行控制的目的。TMOD確定定時/計(jì)數(shù)器的工作方式和功能;TCON控制T0、T1的啟動、停止和設(shè)置溢出標(biāo)志等。1)方式寄存器TMODTMOD的格式如下:TMOD的高4位用于設(shè)置定時器1,低4位用于設(shè)置定時器0。定時/計(jì)數(shù)器有4種工作方式,可由M1、M0來設(shè)定,其對應(yīng)關(guān)系如表4.2所示。2)控制寄存器TCONTCON的格式如下:TCON的高4位用于定時/計(jì)數(shù)器;低4位用于外部中斷。各對應(yīng)位的含義如表4.3所示。4.2.2定時/計(jì)數(shù)器的工作方式8051單片機(jī)的定時/計(jì)數(shù)器有4種工作方式,它們分別是工作方式0~3。1.工作方式0設(shè)置M1M0為00,則定時器工作于方式0,此時為13位的定時/計(jì)數(shù)器,其邏輯結(jié)構(gòu)如圖4.5所示。2.工作方式1設(shè)置M1M0為01,則定時器工作于方式1,此時為16位的定時/計(jì)數(shù)器,其邏輯結(jié)構(gòu)如圖4.6所示。此方式下,16位寄存器(TH0和TL0)全部用上。在加1脈沖的作用下開始加1計(jì)數(shù),當(dāng)TL0的8位計(jì)滿后向TH0進(jìn)一位,直到把TH0也計(jì)滿,向溢出標(biāo)志位TF0進(jìn)位。最大的計(jì)數(shù)值M?=?216?=?65536。3.工作方式2設(shè)置M1M0為10,則定時器工作于方式2,此時為初值自動重載的8位的定時/計(jì)數(shù)器,其邏輯結(jié)構(gòu)如圖4.7所示。此方式下,TL0作為8位加1計(jì)數(shù)器使用,TH0作為初值寄存器使用,兩者由軟件在初始化時賦相同的初值。在加1脈沖的作用下開始加1計(jì)數(shù),當(dāng)TL0的8位計(jì)滿后,向溢出標(biāo)志位TF0進(jìn)位,同時發(fā)出重裝載信號,硬件電路自動將TH0中的初值裝入TL0中,使8位計(jì)數(shù)器TL0又從初值重新開始計(jì)數(shù)。最大的計(jì)數(shù)值M?=?28?=?256。4.工作方式3設(shè)置M1M0為11,則定時器工作于方式3,工作方式3僅對T0有意義。此時定時器T0被分成兩個互相獨(dú)立工作的8位計(jì)數(shù)器TH0和TL0,其邏輯結(jié)構(gòu)如圖4.8所示。4.2.3定時/計(jì)數(shù)器的應(yīng)用定時/計(jì)數(shù)器是單片機(jī)應(yīng)用系統(tǒng)中的重要組成部件,其工作方式的靈活應(yīng)用對提高編程技巧、減輕CPU負(fù)擔(dān)和簡化外圍電路有很大好處。1.定時/計(jì)數(shù)器的初始化由于8051的定時/計(jì)數(shù)器是可編程的,即它的功能是由軟件編程確定的,所以一般在使用定時/計(jì)數(shù)器前對其進(jìn)行初始化,使其按設(shè)定的功能工作。1)基本步驟(1)確定T0和T1的工作方式,對TMOD賦值。(2)計(jì)算初值,并將初值寫入TH0、TL0或TH1、TL1。(3)根據(jù)需要開放中斷。中斷方式時,則對IE賦值;查詢方式時,此步驟沒有。(4)對TR0或TR1置位,啟動定時/計(jì)數(shù)器工作。2)計(jì)算初值X(1)計(jì)數(shù)功能:X?=?最大計(jì)數(shù)值N?-?計(jì)數(shù)值n。(2)定時功能:X?=?最大計(jì)數(shù)值N?-?t/T,其中t為定時時間,T為機(jī)器周期。

任務(wù)6人工控制的小燈

1.任務(wù)目的通過人工控制小燈電路制作和軟件設(shè)計(jì),了解單片機(jī)的中斷系統(tǒng)及相關(guān)的特殊功能寄存器,掌握單片機(jī)外中斷的使用,熟悉掌握C51中斷服務(wù)函數(shù)的編寫。2.任務(wù)要求正常情況下,P1口所接的8個LED燈單燈循環(huán)右移,如果P3.2所接的按鍵按下(外部中斷0)則P1口燈變成閃爍5次后,恢復(fù)中斷前的狀態(tài),繼續(xù)單燈循環(huán)右移。3.硬件電路硬件電路如圖4.12所示。4.程序設(shè)計(jì)人工控制小燈的源程序如下:/*人工控制小燈,外部中斷*///=======聲明區(qū)==============#include<reg51.h>#defineucharunsignedchar//宏定義voiddelay();//聲明延時函數(shù)voidright();//聲明單燈右移函數(shù)//======主程序================voidmain(void){P1=0xff;EA=1;//開總中斷IT0=1;//外部中斷0為下降沿觸發(fā)方式EX0=1;//開外部中斷0while(1)right();//無窮循環(huán),程序一直在運(yùn)行,單燈右移}//======外部中斷0中斷服務(wù)函數(shù)===========voidint0(void)interrupt0{ucharsaveled,i;saveled=P1; //保護(hù)現(xiàn)場P1=0xff;for(i=0;i<10;i++) //P1口燈閃爍5次{P1=~P1;delay();}P1=saveled; //恢復(fù)現(xiàn)場}//======單燈右移函數(shù)===========voidright(){uchari,k;k=0x80;for(i=0;i<8;i++){P1=~k;delay();k>>=1;}}//======延時函數(shù)==============voiddelay(){ucharm,n;for(m=0;m<250;m++)for(n=0;n<255;n++);}

4.3中斷系統(tǒng)

4.3.1中斷有關(guān)的基本概念1.中斷在生活中會發(fā)生一些這樣的事情,如你正在家里看書,突然電話鈴響了,這時你會放下書本,去接電話,和來電話的交談,交談后會放下電話,回去繼續(xù)看書,其流程如圖4.13所示。這就是生活中的“中斷”現(xiàn)象,就是正常的工作過程被另外某些事情打斷了。單片機(jī)中,所謂中斷是指CPU正在處理A事件時,突然發(fā)生另外的事件B,請求CPU緊急處理(中斷請求),CPU暫停當(dāng)前工作(中斷響應(yīng)),轉(zhuǎn)而處理B事情(中斷處理),處理完后再回到原被打斷的地方,繼續(xù)處理A事件(中斷返回)的這一過程,其流程如圖4.14所示。2.中斷源引起中斷的原因或能發(fā)出中斷請求的來源稱為中斷源。8051單片機(jī)中共有5個中斷源:兩個外部中斷,兩個定時/計(jì)數(shù)器中斷,一個串行口中斷。3.中斷技術(shù)的優(yōu)點(diǎn)(1)提高CPU的利用率。有了中斷功能就能解決快速CPU和慢速外設(shè)之間的矛盾。CPU在啟動外設(shè)工作后,繼續(xù)執(zhí)行自己的正常工作,此時外設(shè)也在工作,只有當(dāng)外設(shè)做完一件事情發(fā)出中斷請求時,CPU才會中斷正在執(zhí)行的程序,轉(zhuǎn)去執(zhí)行中斷服務(wù),中斷處理完后再恢復(fù)執(zhí)行原來的工作,而不必始終在等待中。這樣CPU可以命令多個外設(shè)同時工作,從而大大提高了CPU的利用率。(2)實(shí)現(xiàn)實(shí)時處理。在實(shí)時控制中,現(xiàn)場的各個參數(shù)、信息會隨時間和現(xiàn)場情況不斷變化,有了中斷功能,就可以根據(jù)要求,隨時向CPU發(fā)出中斷請求,要求CPU及時處理,使單片機(jī)的工作更加靈活。(3)故障處理。單片機(jī)在運(yùn)行過程中,出現(xiàn)一些事先無法預(yù)料的故障是難免的,如電源突跳、存儲出錯等。有了中斷功能,單片機(jī)就能自行處理,而不必停機(jī)處理。4.3.28051單片機(jī)中斷系統(tǒng)的結(jié)構(gòu)單片機(jī)中能實(shí)現(xiàn)中斷功能的部件稱為中斷系統(tǒng)。8051單片機(jī)的中斷系統(tǒng)由中斷源、與中斷有關(guān)的特殊功能寄存器(TCON、SCON、IE、IP)、中斷入口和順序查詢邏輯電路等組成,其結(jié)構(gòu)框圖如圖4.15所示。1.中斷源8051單片機(jī)中斷系統(tǒng)有5個中斷源,分別為外部中斷0請求、外部中斷1請求、定時/計(jì)數(shù)器T0溢出中斷請求、定時/計(jì)數(shù)器T1溢出中斷請求、串行口中斷請求RI或TI。2.與中斷有關(guān)的特殊功能寄存器與中斷有關(guān)的特殊功能寄存器有4個,分別為中斷標(biāo)志寄存器TCON和SCON、中斷允許控制寄存器IE和中斷優(yōu)先級控制寄存器IP。3.順序查詢電路8051單片機(jī)有兩個中斷優(yōu)先級:高優(yōu)先級和低優(yōu)先級。同一優(yōu)先級別的中斷源采用內(nèi)部自然優(yōu)先級,由順序查詢電路形成。4.中斷入口5個中斷源對應(yīng)著5個中斷入口,它們之間的對應(yīng)關(guān)系如表4.4所示。對C語言程序,可以不知道中斷入口的真實(shí)地址,而用相應(yīng)的序號來代替。4.3.3中斷有關(guān)的特殊功能寄存器8051單片機(jī)是通過對四個與中斷有關(guān)的特殊功能寄存器內(nèi)容查詢或控制來達(dá)到中斷控制的目的。1.中斷標(biāo)志寄存器每個中斷源都對應(yīng)一個中斷標(biāo)志位,它們分別分布在定時/計(jì)數(shù)器控制寄存器TCON和串行口控制寄存器SCON中。(1)?TCON。在TCON中有6位與中斷有關(guān)(其中4位是中斷標(biāo)志位,2位用來設(shè)置外部中斷觸發(fā)方式),另外2位與中斷無關(guān)。如表4.3所示。(2)?SCON。在SCON中最低的兩位為串行口中斷標(biāo)志位,其它位為串行口控制設(shè)置位,在此就不詳述。SCON的格式如下:SCON最低兩位的含義如下:TI:串行發(fā)送中斷標(biāo)志,當(dāng)串行口發(fā)送完一幀數(shù)據(jù)后,該位由硬件自動置1,供中斷系統(tǒng)的查詢電路進(jìn)行中斷查詢。RI:串行口接收中斷標(biāo)志位,當(dāng)串行口接收完一幀數(shù)據(jù)后,該位由硬件自動置1,供中斷系統(tǒng)的查詢電路進(jìn)行查詢。TI和RI與其他4個中斷標(biāo)志位不同的是,串行口中斷響應(yīng)完成后不會自動清0,必須用軟件清0。2.中斷允許寄存器IE8051單片機(jī)的5個中斷源都是可屏蔽中斷,中斷系統(tǒng)內(nèi)部有一個中斷允許寄存器IE,用于控制各中斷源的中斷開放或屏蔽。IE的格式如下:IE各對應(yīng)位的含義如表4.5所示:3.中斷優(yōu)先級寄存器IP8051單片機(jī)有兩個中斷優(yōu)先級:高優(yōu)先級和低優(yōu)先級。每個中斷源都可以通過對中斷優(yōu)先級控制寄存器IP設(shè)置為高優(yōu)先級中斷或低優(yōu)先級中斷。IP的格式如下:4.3.4中斷處理過程中斷處理過程可分為3個階段:中斷響應(yīng)、中斷處理、中斷返回。中斷響應(yīng)是CPU對中斷源中斷請求的回答。單片機(jī)在運(yùn)行時,并不是任何時刻都會去響應(yīng)中斷請求,而是在中斷響應(yīng)條件滿足之后才會響應(yīng)。1.中斷響應(yīng)條件CPU響應(yīng)中斷的基本條件如下:(1)有中斷源發(fā)出中斷請求。(2)中斷總允許位EA?=?1,即CPU允許所有中斷源申請中斷。(3)申請中斷的中斷源的中斷允許位為1,即CPU允許響應(yīng)中斷。若滿足上述條件,CPU一般會響應(yīng)中斷,但如果出現(xiàn)下列任何一種情況,對應(yīng)中斷響應(yīng)會受到阻斷:(1)?CPU正在執(zhí)行一個同級或高一級的中斷服務(wù)函數(shù)。(2)當(dāng)前指令未執(zhí)行完。(3)正在執(zhí)行中斷返回或訪問寄存器IE和IP。若存在任何一種阻斷情況,中斷查詢結(jié)果即被取消,否則在緊接著的下一個機(jī)器周期,就會響應(yīng)中斷。2.中斷處理過程如果中斷響應(yīng)條件滿足,且不存在中斷阻斷的情況,則CPU就會響應(yīng)中斷,進(jìn)行相應(yīng)的中斷處理。此時中斷系統(tǒng)會自動產(chǎn)生中斷函數(shù)調(diào)用指令,通過硬件查詢對應(yīng)中斷入口地址,同時自動把原來斷開的位置(斷點(diǎn))保護(hù)起來,然后去執(zhí)行用戶編寫的實(shí)現(xiàn)一定功能的

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論