新聞中心

第9課 定時器

作者: 時間:2016-12-01 來源:網(wǎng)絡(luò) 收藏
在對單片機應(yīng)用項目進行編程時,經(jīng)常需要插入一定的延時程序,此時一般有兩種方案可選擇,一是采用軟件手段——插入一段延時程序,二是采用單片機內(nèi)部的硬件資源——定時器。對于軟件手段,我們在前面的課程已經(jīng)詳細講到過,它最大的缺點就是占用單片機的“機時”,也就是耗費單片機的“精力”,從而降低了單片機的工作效率。而定時器則不同,它是單片機內(nèi)部一個獨立的功能模塊,定時器一旦設(shè)置后,定時器便自動開始計時,當(dāng)計時時間滿后,便產(chǎn)生相應(yīng)的中斷,去處于中斷函數(shù)內(nèi)的程序,而在計時這段時間內(nèi),定時器和CPU是分別獨立工作的,CUP此時就可以有時間去做其它的事情。所以為了提高單片機的工作效率和實現(xiàn)精確的延時,目前幾乎所有的半導(dǎo)休生產(chǎn)廠商在設(shè)計單片機時,在內(nèi)部都配置了定時器模塊。下面51單片機內(nèi)部的定時器進行介紹。
1、定時器/計數(shù)器概述
51單片機內(nèi)部共有兩個定時器/計數(shù)器模塊T0和T1,對于52單片機內(nèi)部又增加了定時器T3。它們即具有定時功能,也可以作計數(shù)功能,可以通過相應(yīng)的寄存器進行設(shè)置。但不論是用于定時功能還是計數(shù)功能,其基本原理都是一樣的,如圖1所示為定時器/計數(shù)器的結(jié)構(gòu)圖,內(nèi)部為一個加1計數(shù)器,由高8位TH0(或TH1)和低8位TL0(或TL1)兩個計數(shù)寄存器組成。TMOD是定時器/計數(shù)器的工作模式和工作方式寄存器,用來確定是處于定時模式還是計數(shù)模式以及何種工種方式,這個后面講解寄存器的時會講到。TCON為控制寄存器,用來控制定時器/計數(shù)器的啟動、停止及溢出標(biāo)志等的設(shè)置。
圖1 定時器/計數(shù)器的結(jié)構(gòu)框圖
工作原理如圖的所示,加1計數(shù)器相當(dāng)于一個裝數(shù)的容器,每來一個脈沖自動加1,當(dāng)數(shù)裝滿后便自動溢出,如果此時設(shè)置的中斷,CPU便會停止當(dāng)前正在執(zhí)行的工作,去執(zhí)行中斷函數(shù)內(nèi)的程序。這里也可以形象把計數(shù)器看作一個裝水的水桶,每來一滴水,水桶的水便會增加一點,當(dāng)水裝滿了后,便會溢出。
加1計數(shù)器的計數(shù)脈沖有兩個來源,一個是由系統(tǒng)時鐘振蕩器輸出脈沖經(jīng)過12分頻后送來,一個是由外部引腳T0(P34引腳)和T1(P35引腳)送來的外部脈沖(通常為下降沿),前者主要用于定時,后者主要用于計數(shù)。每來一個脈沖時,計數(shù)器會自動加1,當(dāng)加到全為1時,再來一個脈沖,計數(shù)器便會自動清0,且計數(shù)器此時會溢出并使TCON寄存器中的TF0和TF1置1,如果此時設(shè)置了定時器中斷允許,便會自動的向CPU發(fā)出中斷請求。
圖2 定時器/計數(shù)器的工作原圖
可能大家還是不明白,這樣為什么就可以用來進行定時和計數(shù)呢,這里我們以通俗的例子解釋一下定時,還是以水桶裝水為例,假設(shè)水桶開始一滴水都沒有(相當(dāng)于計數(shù)器內(nèi)部全為0),此時來一滴水(相當(dāng)于來一個脈沖),水桶的水便會增加一滴(相當(dāng)于計數(shù)器自動加1),而水桶的容積是規(guī)定了的(相當(dāng)于計數(shù)器最大計數(shù)值),水桶的水總會有滿的時候(相當(dāng)于計數(shù)器加到全部為1),此時假設(shè)每來一滴水的時間我們知道或者人為可以設(shè)置,水桶從一滴水沒有到全部裝滿就會有一個時間,這個就是定時時間值。
也就是說,我們?nèi)绻烂縼硪粋€脈沖相應(yīng)的時間t,又知道加1計數(shù)器最大可以裝多少數(shù)n,我們就可以知道這個時間值T,即T=nt。而這個T的時間通常是固定的,實際應(yīng)用時需要不同的定時時間,我們可以采用預(yù)先在計數(shù)器內(nèi)裝一定的初值(相當(dāng)于在水桶內(nèi)先裝一些水),然后在這個初值的基本上再來相應(yīng)脈沖,計數(shù)器自動加1,一直到溢出,我們就可以得到任意想要的定時時間。
從圖2中我們還可以看出,定時器/計數(shù)器還有一個控制開關(guān),此開關(guān)可以控制定時器計數(shù)器相應(yīng)的啟動和停止。而此開關(guān)的開閉主要是由圖2左下部的TRX 、GATE等信號共同作用,這里都是門電路,可以由數(shù)電的知道解釋,因為比較簡單,這里我就不作說明,后面結(jié)合的相關(guān)的寄存器進行介紹。
2、定時器/計數(shù)器相關(guān)寄存器
與定時器/計數(shù)器相關(guān)的寄存器主要有兩個(編程時如涉及到中斷,還要用到中斷相關(guān)的寄存器,前面已經(jīng)講可),一個是工作模式及工作方式設(shè)置寄存器TMOD,一個就是跟控制有關(guān)(就是圖2中開關(guān)的設(shè)置有關(guān)的)寄存器TCON,下面分別對其進行介紹。
注意:對單片機內(nèi)部寄存器的說明相當(dāng)于對結(jié)構(gòu)原理的解釋,所以在單片機內(nèi)部功能模塊看不明白時,也可以借助相關(guān)寄存器的說明加以理解。
(1)定時器工作模式及工作方式寄存器TMOD
工作方式寄存器TMOD用于設(shè)置定時/計數(shù)器的工作模式及工作方式,低四位用于T0,高四位用于T1。其格式如下:
GATE:門控位。GATE=0時,只要用軟件使TCON中的TR0或TR1為1,就可以啟動定時/計數(shù)器工作;GATA=1時,要用軟件使TR0或TR1為1,同時外部中斷引腳或也為高電平時,才能啟動定時/計數(shù)器工作。即此時定時器的啟動多了一條件。
C/T :定時/計數(shù)模式選擇位。C/T=0為定時模式;C/T =1為計數(shù)模式。
M1M0:工作方式設(shè)置位。定時/計數(shù)器有四種工作方式,由M1M0進行設(shè)置。具體說明如下表:
(2)定時器/計數(shù)器控制寄存器TCON
TCON的低4位用于控制外部中斷,已在前面介紹。TCON的高4位用于控制定時/計數(shù)器的啟動和中斷申請。其格式如下:
TF1(TCON.7):T1溢出中斷請求標(biāo)志位。T1計數(shù)溢出時由硬件自動置TF1為1。CPU響應(yīng)中斷后TF1由硬件自動清0。T1工作時,CPU可隨時查詢TF1的狀態(tài)。所以,TF1可用作查詢測試的標(biāo)志。TF1也可以用軟件置1或清0,同硬件置1或清0的效果一樣。
TR1(TCON.6):T1運行控制位。TR1置1時,T1開始工作;TR1置0時,T1停止工作。TR1由軟件置1或清0。所以,用軟件可控制定時/計數(shù)器的啟動與停止。
TF0(TCON.5):T0溢出中斷請求標(biāo)志位,其功能與TF1類同。
TR0(TCON.4):T0運行控制位,其功能與TR1類同。
上一頁 1 2 下一頁

關(guān)鍵詞: 定時器單片

評論


技術(shù)專區(qū)

關(guān)閉