有定時器中斷 單片機才好玩

時間:2019/1/11 4:31:40

什么是單片機的中斷處理?總的來說中斷是單片機具有處理內外隨機發生事件的能力,具體來說的話就是單片機在處理某一任務時,可以暫停這一任務的處理,轉而去處理更重要的任務,等這一任務處理完后再接著之前的任務,可以說是單片機最重要的特征。舉個例子,小明在家里做作業,這個時候有人敲門,此時小明停止寫作業起身去開門。這個例子中“有人敲門”就是外部的一個激勵事件,小明停止寫作業就是對這一外部激勵事件的響應,小明開門迎接朋友之后繼續做作業,那么這就是一個完整的中斷了。

中斷的優先級

繼續以小明這個例子,同樣的小明在做作業,而且邊上有熱水壺在燒開水,這個時候有人在敲門,此時小明起身去開門;當小明快走到門口的時候,熱水壺的水燒開了發出提醒的蜂鳴聲,這個時候小明有兩個選擇,一是不管熱水壺的蜂鳴聲,繼續去開門;而是先關掉熱水壺的電源再去開門。這里就涉及到熱水燒開和有人敲門兩個事件中哪件更重要,越重要的優先級越高。這就看有人敲門和熱水燒開在小明心中的重要性了?;氐絾纹瑱C,我們就可以設置中斷激勵事件的優先級。本系列采用的是AT89C52單片機,該單片機有6個中斷源,這里我們做一個表格。大家先有這么一個概念,這一節只會用到定時器0的中斷實現LED等閃爍,其他的如外部中斷在用到的時候再去了解。


小明的例子中大家應該認識了什么是單片機的中斷以及中斷有優先級這一屬性,還有一點提醒下,就是我們要用到某一中斷源時,除了開啟該中斷源,還必須得設置全局中斷允許位EA。說白了就是小明在做作業的時候首先得允許其他事件的發生,否則的話小明就會一直在做作業直到完成而不管外界發生的任何事情,這一點是很好理解的。

中斷允許寄存器IE用來設定各個中斷源的開啟和關閉,該寄存器可以位尋址,即對該寄存器的某一位進行單獨操作,單片機復位時IE全部清零,也就是關閉中斷。


EA是全局中斷允許位,ET2是定時器2中斷允許位,ES是串行口中斷允許位,ET1是定時器1中斷允許位,EX1是外部中斷1允許位,ET0是定時器0中斷允許位,EX0是外部中斷0允許位,都是置1時開啟,清0時關閉。

單片機的定時器中斷

單片機的定時器本質上是加1計數器,由高8位和低8位兩個寄存器組成。TMOD寄存器是定時器的工作方式寄存器,確定工作方式和功能;TCON寄存器是控制寄存器,控制T0和T1的啟動、停止及溢出標志。工作于定時器模式時,加1操作是對內部機器周期計數(1個機器周期等于12個時鐘周期,1個時鐘周期等于晶振的倒數)。當定時器中斷允許時,高8位和低8位構成的寄存器加滿至全1時,再來一個加1操作就清空,此時TCON寄存器中的TF0或TF1溢出標志位置1,單片機產生定時器中斷激勵。


TMOD用來設置定時器的工作方式,不能位尋址,單片機復位時TMOD全部被清零。

其中GATE位是門控制位:

GATE = 0,定時器啟動與停止僅受TCON寄存器中TRX(X=0或1)來控制;

GATE = 1,定時器啟動與停止由TCON寄存器中TRX(X=0或1)和外部中斷引腳INT0或INT1上的電平狀態(電平狀態為高電平時有效)來共同控制。

C/T位是定時器/計數器模式選擇位:

C/T = 1時為計數器模式;C/T = 0時為定時器模式。

M1和M0是工作方式選擇位,每個定時器有4種工作方式,由M1和M0組合設定,如下表所示。


定時器控制寄存器TCON可以位尋址,用來設置定時器中斷的啟動、停止和溢出等,單片機復位時清零。


TF1:定時器1溢出標志位。

當定時器1計滿溢出時由硬件置1,并且申請進入中斷,進入中斷服務程序后由硬件自動清0,也就是說用定時器中斷時該位完全不用人為操作,我們的任務就是寫好中斷服務程序。


波克棋牌旧版在哪里下载