版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
單原及接片理口技術(shù)機12第六章
中斷、定時器/計數(shù)器原理及應(yīng)用01中斷系統(tǒng)02定時器/計數(shù)器03中斷、定時器/計數(shù)器應(yīng)用編程04習(xí)題PrincipleandinterfacetechnologyofMicrocomputer 什么叫中斷?在我們生活中的時常會發(fā)生這樣的事情,某同學(xué)正在教室寫作業(yè),忽然被人叫出去,回來后,繼續(xù)寫作業(yè)。這是生活中的中斷現(xiàn)象。在程序運行的過程中,由于系統(tǒng)內(nèi)、外的某種原因使CPU暫時中止其正在執(zhí)行的程序,轉(zhuǎn)去執(zhí)行請求中斷的那個服務(wù)程序,等處理完中斷服務(wù)程序后再返回執(zhí)行原來中止的程序的過程,叫做中斷。中斷的發(fā)生及執(zhí)行過程如圖6-1所示。01 為什么要設(shè)置中斷??⑴提高CPU工作效率。大多數(shù)外部設(shè)備的速度比CPU慢,比如打印機打印字符的速度相比CPU運行速度要慢許多,CPU與外部設(shè)備無法同步進行輸入輸出,用CPU查詢方式又大大浪費CPU的時間。因此,可通過中斷方式實現(xiàn)CPU與外部設(shè)備的協(xié)調(diào)。⑵具有實時處理功能。在實時控制中,現(xiàn)場的各種參數(shù)、信息均隨時間和現(xiàn)場而變化。這些外界變量可根據(jù)要求隨時向CPU發(fā)出中斷申請,請求CPU及時處理中斷請求。如中斷條件滿足,CPU馬上就會響應(yīng),進行相應(yīng)的處理,從而實現(xiàn)實時處理。⑶具有故障處理功能。針對難以預(yù)料的情況或故障,如掉電、存儲出錯、運算溢出等,可通過中斷系統(tǒng)由故障源向CPU發(fā)出中斷請求,再由CPU轉(zhuǎn)到相應(yīng)的故障處理程序進行處理。??⑷實現(xiàn)分時操作。中斷系統(tǒng)的組成MCS-51單片機提供了3種類型的中斷源,共包括2個外中斷((INT0)?、(INT1)?),2個片內(nèi)定時/計數(shù)器中斷(T0、T1),1個串行口中斷。中斷系統(tǒng)結(jié)構(gòu)如圖6-2所示。1.1中斷向量及中斷寄存器1中斷向量中斷向量是指中斷服務(wù)程序的入口地址。中斷響應(yīng)后,程序?qū)⑻D(zhuǎn)至對應(yīng)的中斷向量執(zhí)行中斷子程序。對于C語言程序,設(shè)計者可以不必知道中斷向量的真實地址,但在匯編語言程序中,必須明確該中斷子程序?qū)儆谀膫€中斷源以及它所對應(yīng)的中斷向量。1.22寄存器TCON為定時器/計數(shù)器的控制寄存器,同時鎖存T0、T1溢出中斷源標(biāo)志、外部中斷請求標(biāo)志。各位可位尋址。SCON為串行口控制寄存器,其字節(jié)地址為98H,可以進行位尋址。MCS-51對中斷源的開放或屏蔽是由中斷允許寄存器IE控制的,IE的字節(jié)地址為A8H,可以按位尋址,當(dāng)單片機復(fù)位時,IE被清為“0”。MCS-51內(nèi)部的中斷優(yōu)先級控制寄存器IP用于設(shè)定各中斷的優(yōu)先級。其字節(jié)地址為B8H,既可按字節(jié)形式訪問,又可按位形式訪問。設(shè)置IP寄存器的初始值,使得MCS-51的片內(nèi)中斷為低優(yōu)先級,片外中斷為高優(yōu)先級。例1解:用位操作指令串行口、T0、T1為低優(yōu)先級:PS=0;PT0=0;PT1=0;外中斷0、1為高優(yōu)先級:PX0=1;PX1=1;用字節(jié)操作指令:IP=0x05;MSC-51有2個中斷優(yōu)先級,每一個中斷請求源均可編程為高優(yōu)先級中斷或低優(yōu)先級中斷,從而實現(xiàn)2級中斷嵌套。如圖6-3所示。中斷處理MCS-51單片機中斷處理過程分為三個階段,即中斷響應(yīng)、中斷處理和中斷返回。其中中斷響應(yīng)由CPU硬件自動完成,而中斷服務(wù)則由軟件完成。1.31中斷響應(yīng)在每一個機器周期中,所有的中斷源都要按照其順序檢查一遍。到S6狀態(tài)時,就查找到所有被激活的中斷申請并排好優(yōu)先順序。在下一個機器周期的S1狀態(tài),只要不受阻斷,就開始響應(yīng)高級中斷。2中斷處理如果中斷響應(yīng)條件滿足,而且不存在中斷受阻,CPU將響應(yīng)中斷。在此情況下,CPU首先使被響應(yīng)中斷的“優(yōu)先級激活”觸發(fā)器置位,以阻斷同級和低級的中斷。然后,根據(jù)中斷源的類別,在硬件的控制下將斷點壓入堆棧,并將對應(yīng)中斷源的入口地址裝入程序計數(shù)器PC。3中斷返回中斷處理程序的最后一條指令是中斷返回指令RETI。它的功能是將斷點彈出送回PC中,使程序返回到原來被中斷的斷點處,繼續(xù)執(zhí)行被中斷的程序。外部中斷系統(tǒng)的應(yīng)用編程從軟件角度看,中斷應(yīng)用包含編寫中斷初始化程序和中斷服務(wù)程序兩部分。1.41中斷初始化程序中斷初始化程序?qū)嵸|(zhì)上就是對TCON、SCON、IE和IP寄存器的管理和控制,也即對這些寄存器的相應(yīng)位進行狀態(tài)設(shè)置。初始化程序一般都包含在主程序中,根據(jù)需要通過相應(yīng)語句來完成。在編寫中斷初始化程序時應(yīng)考慮以下三個方面:1、對外中斷源,設(shè)置中斷請求的觸發(fā)方式。2、設(shè)置中斷允許控制寄存器IE。3、設(shè)置中斷優(yōu)先級寄存器IP。2中斷服務(wù)程序中斷服務(wù)程序是一種具有特定功能的獨立程序段,根據(jù)中斷源的具體要求進行編寫。C51編譯器允許在C語言源程序中聲明中斷和編寫中斷服務(wù)程序,通過使用interrupt關(guān)鍵字實現(xiàn)。定義中斷服務(wù)程序的一般格式如下:void函數(shù)名()interruptn[usingm]usingm代表使用單片機內(nèi)存4組工作寄存器的哪一組,系統(tǒng)編譯時自動分配,所以常省略不寫。利用(INT0)?引入單脈沖,每來一個負(fù)脈沖,將連接到P1口的發(fā)光二極管循環(huán)點亮。電路如圖6-4所示,元件清單如表6-6。例2解:通過k1按下實現(xiàn)外部中斷0的負(fù)跳沿中斷,此時就將IT0置1。中斷一次P1口的發(fā)光二極管點亮一個,多次按下k1鍵實現(xiàn)流水燈的效果。在中斷函數(shù)要實現(xiàn)給P1口賦不同的值來點亮相應(yīng)的發(fā)光二極管。流程圖如圖6-5,仿真結(jié)果如圖6-6所示。解開始P1口的8只LED發(fā)光二極管閃爍,單片機(INT0)?腳接按鍵k1,當(dāng)按下k1鍵8只LED以從上向下的流水燈形式循環(huán)3次,中斷結(jié)束后回到P1口8只LED發(fā)光二極管閃爍。例3解:本題通過外部中斷0可以實現(xiàn)對主程序的中斷,在中斷沒有時主程序中要實現(xiàn)P1口8只LED發(fā)光二極管閃爍;中斷到來時要中斷主程序去執(zhí)行外部中斷0的中斷函數(shù),當(dāng)外部中斷0的中斷執(zhí)行完后要返回主程序繼續(xù)執(zhí)行。流程圖如圖6-7,仿真結(jié)果如圖6-8所示。解定時器/計數(shù)器在實時控制系統(tǒng)中,常常需要有實時時鐘以實現(xiàn)定時或延時,也常需要有計數(shù)功能以實現(xiàn)對外界事件進行計數(shù)。定時或計數(shù)達(dá)到終點時將會產(chǎn)生中斷。02定時器/計數(shù)器的結(jié)構(gòu)與工作原理2.1MCS-51單片機內(nèi)有兩個16位定時器/計數(shù)器(Timer/Counter)T0和T1。其結(jié)構(gòu)如圖6-9所示。它由特殊功能寄存器TCON、TMOD以及T0、T1組成。其中TMOD為模式控制寄存器,主要用來設(shè)置定時器/計數(shù)器的工作方式;TCON為控制寄存器,主要用來控制定時器的啟動與停止。兩個16位的工作寄存器T0、T1是定時器/計數(shù)器的核心,他們均可以分成2個獨立的8位計數(shù)器即TH0、TL0、TH1和TL1,均是加1的計數(shù)器。加1計數(shù)器的脈沖有兩個來源,一個是外部脈沖源,另一個是系統(tǒng)時鐘振蕩器。計數(shù)器對兩個脈沖源之一進行輸入計數(shù),每輸入一個脈沖,計數(shù)值加1。定時器/計數(shù)器控制寄存器2.2 定時器/計數(shù)器工作模式寄存器TMODTMOD用于控制定時器/計數(shù)器的工作模式和工作方式,其字節(jié)地址為89H,不可位尋址。其中,低4位用于決定T0的工作方式,高4位用于決定T1的工作方式,M1和M0用來確定所選工作方式。其格式如表6-8所示。定時器/計數(shù)器控制寄存器TCONTCON為定時器/計數(shù)器的控制寄存器,同時鎖存T0、T1溢出中斷源標(biāo)志、外部中斷請求標(biāo)志。各位可位尋址。其格式如表6-7所示。設(shè)定時器T0為定時工作方式,要求用軟件啟動定時器T0工作,按方式1工作;定時器T1為計數(shù)工作方式,要求軟件啟動,工作方式為方式2。則TMOD應(yīng)怎樣設(shè)置?例4解:根據(jù)TMOD各位的定義可知,其控制字如表6-10。TMOD各位的設(shè)置應(yīng)為01100001B,即控制字為61H。其指令形式為TMOD=0x61。定時器/計數(shù)器的工作方式2.3方式1當(dāng)M1M0為01時,工作于方式1。工作方式1是16位定時器/計數(shù)器。工作方式0時的電路結(jié)構(gòu)如圖6-11所示。方式0當(dāng)M1M0為00時,工作于方式0。工作方式0是13位定時器/計數(shù)器,16位寄存器只用13位,其中TLx(x=0,1)的高3位沒用。工作方式0時的電路結(jié)構(gòu)如圖6-10所示。定時器/計數(shù)器的工作方式2.3方式3當(dāng)M1M0為11時,工作于方式3,是8位定時器/計數(shù)器。該方式只適合用于定時器T0。工作方式3時的電路結(jié)構(gòu)如圖6-12所示。方式2當(dāng)M1M0為10時,工作于方式2,為8位定時器/計數(shù)器自動重裝方式。在方式2中,16位計數(shù)分成兩部分,僅TLx作為工作寄存器,而THx的值在計數(shù)中保持不變。TLx溢出時,THx中的值將作為裝載值由CPU(硬件)自動裝入TLx中。因此,使用時為了保證Tx(x=0,1)首次工作也能正常運行,在初始化時TLx、THx均應(yīng)裝入相同的計數(shù)初值。工作方式2時的電路結(jié)構(gòu)如圖6-12所示。定時器/計數(shù)器的編程2.42定時器/計數(shù)器編程當(dāng)T0或T1工作于計數(shù)模式時,計數(shù)脈沖由外部引入,它是對外部脈沖進行計數(shù)。因此計數(shù)值應(yīng)根據(jù)實際要求來確定。計數(shù)初值的計算公式為:X=M-計數(shù)值。其中X為計數(shù)初值,M為最大計數(shù)值(溢出值)。當(dāng)T0或T1工作于定時模式時,由于是對機器周期進行計數(shù),故計數(shù)值應(yīng)為定時時間對應(yīng)的機器周期個數(shù)。為此,應(yīng)首先將定時時間轉(zhuǎn)換為所需要記錄的機器周期個數(shù)(計數(shù)值)。定時初值的計算公式為:X=M-計數(shù)值=M-(Tc×fosc)/12。Tc為定時時間,fosc為機器時鐘(振蕩器)的振蕩頻率,M為最大定時值(溢出值),X為定時初值。1定時器/計數(shù)器初始化初始化程序應(yīng)該完成以下工作:⑴對TMOD賦值,以確定T0和T1的工作方式;
⑵計算初值,并將其寫入TH0、TL0或TH1、TL1;⑶中斷方式時,則對IE賦值,開放中斷;
⑷使TR0或TR1置位,啟動定時計數(shù)器。AT89C52單片機的P1口連接74LS373鎖存器,鎖存器的輸出端分別連接8個LED燈,電路如圖6-13所示。請用定時器方式0實現(xiàn)從上各下的流水燈(D1向D8逐一點亮)效果。假設(shè)單片機的晶振頻率為12MHz,流水燈間隔的時間為300毫秒。元件清單如表6-13所示。例5解:由于采用12MHz的晶振,因此單片機的機器周期為12÷12MHz=1us。而定時器方式0下最大時間可以定義為8ms,300ms需要多次循環(huán)定時才能實現(xiàn)。為了方便計算,選擇定時6ms,用一個變量對6毫秒定時進行一次計數(shù),計數(shù)300÷6=50次。定時時間=6ms=6×10-3=(213-X)×1×10-6,得X=2192,TH0=2192/32=0x44;TL0=2192%32=0x10。采用中斷方式的流程圖如圖6-14,仿真結(jié)果如圖6-15所示。解系統(tǒng)時鐘頻率為12MHZ,編程實現(xiàn)從P1.1輸出周期為1s的方波。仿真電路如圖6-16,元件清單如表6-12所示。例6解:方波的高低電平各占一半,要產(chǎn)生1s的方波,所以高低電平各為500ms,應(yīng)產(chǎn)生500ms的周期性的定時,定時到則對P1.1取反就可實現(xiàn)。由于定時時間較長,一個定時/計數(shù)器不能直接實現(xiàn),可用定時/計數(shù)器T0產(chǎn)生周期性為10ms的定時,然后用一個寄存器R2對10ms計數(shù)50次或用定時/計數(shù)器T1對10ms計數(shù)50次實現(xiàn)。系統(tǒng)時鐘為12MHZ,定時/計數(shù)器T0定時10ms,計數(shù)值N為10000,只能選方式1,方式控制字為00000001B(01H),初值X:X=65536-10000=55536=1101100011110000B則TH0=11011000B=D8H,TL0=11110000B=F0H。解(1)用寄存器R2作計數(shù)器軟件計數(shù),中斷處理方式,流程圖如圖6-17。(2)用定時/計數(shù)器T1計數(shù)實現(xiàn),定時/計數(shù)器T1工作于計數(shù)方式時,計數(shù)脈沖通過T1(P3.5)輸入,設(shè)定時/計數(shù)器T0定時時間到對T1(P3.5)取反一次,則T1(P3.5)每20ms產(chǎn)生一個計數(shù)脈沖,那么定時500ms只須計數(shù)25次,設(shè)定時/計數(shù)器T1工作于方式2,初值X=256-25=231=11100111B=E7H,TH1=TL1=E7H。因為定時/計數(shù)器T0工作于方式1定時,定時/計數(shù)器T1工作于方式2計數(shù),則這時方式控制字為01100001B(61H)。定時/計數(shù)器T0和T1都采用中斷方式工作。其流程圖如圖6-18所示。解中斷、定時器/計數(shù)器應(yīng)用編程03按鍵k1接(INT0)?腳、按鍵k2接(INT1)?腳,電路如圖6-20:通電后,P1口的8只LED燈全燈閃爍,當(dāng)按下P3.3引腳上的按鍵k2時產(chǎn)生一個低優(yōu)先級外部中斷1(跳沿觸發(fā)),P1口外接的LED燈執(zhí)行從下向上的流水燈(一個led燈亮的流水燈)循環(huán)3次后恢復(fù)全亮閃爍;若在外部中斷1執(zhí)行期間,按下P3.2引腳上的按鍵k1執(zhí)行一個高優(yōu)先級外部中斷0(跳沿觸發(fā)),P1口外接的LED燈執(zhí)行從上向下的流水燈(一個led燈亮的流水燈)循環(huán)3次后返回外部中斷0的中斷服務(wù)程序繼續(xù)執(zhí)行。例7解:這里牽涉外部中斷的優(yōu)先級處理,盡管外部中斷(INT0)?的自然優(yōu)先級比外部中斷(INT1)?高(自然優(yōu)先級下再者屬于優(yōu)先級同級),但是當(dāng)外部中斷(INT1)?已經(jīng)在執(zhí)行的情況下,外部中斷(INT0)?是不能去中斷外部中斷(INT1)?的執(zhí)行。要能中斷外部中斷(INT1)?的執(zhí)行,必須將外部中斷(INT0)?的優(yōu)先級設(shè)置成高級優(yōu)先級,才能實現(xiàn)題目的要求。其次,這里的跳沿觸發(fā)就是下降沿觸發(fā)。開始P1口的8只LED燈全燈閃爍,這個是在主程序中執(zhí)行,按下k1、k2執(zhí)行的是中斷處理程序。對于中斷前的狀態(tài)是否要保存,要根據(jù)具體情況而定。流程圖如圖6-21,仿真結(jié)果如圖6-22所示。設(shè)計一采用中斷掃描方式獨立式鍵盤,只有在鍵盤有按鍵按下時,才進行處理,接口電路見圖6-23。單片機與4個獨立按鍵k1~k4及8個LED指示燈的一個獨立式鍵盤。4個按鍵接在P1.0~P1.3引腳,P1口接8個LED指示燈,控制LED指示燈亮與滅。按下k1鍵,P1口8個LED正向(由上至下)流水點亮;按下k2鍵,P1口8個LED反向(由下而上)流水點亮;按下k3鍵,P1口8個LED編號為奇數(shù)與偶數(shù)的4個LED交替點亮;按下k4鍵,P1口8個LED閃爍點亮。例8解:k1~k4按下都要引起外部中斷,要確定是哪個按鍵按下產(chǎn)生的中斷,就要對四個按鍵所連接的單片機引腳進行高低電平的判斷。四個按鍵可以隨意按下其中一個,沒有先后順序的問題。其流程圖如圖6-24,仿真結(jié)果如圖6-25所示。解采用12MHz晶振,在P1.0腳上輸出周期為2s,占空比為40%的脈沖信號。仿真電路如圖6-26,元件清單如表6-14所示。例9解:占空比是指在一串理想的脈沖周期序列中,正脈沖的持續(xù)時間與脈沖總周期的比值。對于12MHz晶振,取50ms定時,則周期為2s需40次中斷,占空比為40%,高電平應(yīng)為16次中斷,低電平為24次中斷。流程圖如圖6-27,仿真結(jié)果如圖6-28所示。解設(shè)計一個用數(shù)碼管顯示的一個跑表,電路如圖6-29。跑表在0.0s到59.9s之間運行,用三個獨立鍵盤實現(xiàn)如下功能:開始顯示0.0,按下第一個按鍵k1計時開始且蜂鳴器響三聲,按下第二個按鍵k2計時暫停,按下第三個按鍵k3時計數(shù)值清零。元件清單如表6-15所示。例10解:根據(jù)題意,可以以0.1s為一個單位計數(shù),所以計數(shù)就變成了從0開始到599結(jié)束,這樣可以減少變量的定義。要注意小數(shù)點顯示的位置,在秒的個位才有小數(shù)點,其它位置沒有。對于數(shù)碼管的顯示在這里采用定時器的方式來實現(xiàn)動態(tài)掃描,那么就要注意2ms一到,數(shù)碼管顯示一位。其次,計時的啟動與暫停可以通過TR0或TR1來實現(xiàn);計數(shù)值清零要考慮到用來作為時間計數(shù)的定時器清零。流程圖如圖6-30,仿真結(jié)果如圖6-31所示。解1、8051單片機有幾個中斷源?各中斷標(biāo)志是如何產(chǎ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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023三年級數(shù)學(xué)下冊 一 采訪果蔬會-兩、三位數(shù)除以一位數(shù)(二)第1課時 兩位數(shù)除以一位數(shù)和幾百幾十位數(shù)的口算教學(xué)實錄 青島版六三制
- 2024年度股權(quán)投資合同:風(fēng)險投資機構(gòu)對初創(chuàng)企業(yè)股權(quán)投資協(xié)議3篇
- 2024年中國維生素鈣片市場調(diào)查研究報告
- 2024年中國雜銠提純來料市場調(diào)查研究報告
- 浙江工業(yè)大學(xué)研究生綜合測評表
- 2024年物業(yè)管理前期服務(wù)合同標(biāo)準(zhǔn)模板版B版
- 2024epc綠色建筑項目總承包合同2篇
- 2024至2030年中國喇叭線圈行業(yè)投資前景及策略咨詢研究報告
- 2024年度塑料行業(yè)用粘結(jié)劑技術(shù)轉(zhuǎn)讓合同3篇
- 2024年標(biāo)準(zhǔn)阿里巴巴店鋪托管服務(wù)協(xié)議模板版B版
- 單病種管理理論知識考核試題及答案
- 鉛鋅礦礦山供電系統(tǒng)設(shè)計與節(jié)能改造研究
- DZ∕T 0211-2020 礦產(chǎn)地質(zhì)勘查規(guī)范 重晶石、毒重石、螢石、硼(正式版)
- 啟航計劃培訓(xùn)總結(jié)與反思
- 《電力工程電纜防火封堵施工工藝導(dǎo)則》
- 變電站隱患排查治理總結(jié)報告
- 車輛救援及維修服務(wù)方案
- 三體讀書分享
- 《腎內(nèi)科品管圈》
- 空氣預(yù)熱器市場前景調(diào)研數(shù)據(jù)分析報告
- 2024年南平實業(yè)集團有限公司招聘筆試參考題庫附帶答案詳解
評論
0/150
提交評論