單片機定時計數(shù)器與串行接口_第1頁
單片機定時計數(shù)器與串行接口_第2頁
單片機定時計數(shù)器與串行接口_第3頁
單片機定時計數(shù)器與串行接口_第4頁
單片機定時計數(shù)器與串行接口_第5頁
已閱讀5頁,還剩53頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第7章單片機的定時/計數(shù)器單片機原理、接口及應(yīng)用本章重點★7.1定時計數(shù)器基本知識★7.2定時計數(shù)器結(jié)構(gòu)和工作原理★7.3定時計數(shù)器的控制寄存器★7.4定時器的四種工作方式

★7.5定時計數(shù)器的應(yīng)用編程7.1定時計數(shù)器基本知識8051單片機中有兩個計數(shù)器T0和T1,這兩個計數(shù)器分別是由兩個8位的RAM單元組成的,即每個計數(shù)器都是16位的計數(shù)器,最大的計數(shù)量是65536。8031中的計數(shù)器除了能作為計數(shù)之用外,還能用作時鐘,時鐘的用途當(dāng)然很大,如打鈴器,電視機定時關(guān)機,空調(diào)定時開關(guān)等等。定時器和計數(shù)器的原理是一樣的,都是進行計數(shù)操作,每次加1,加滿溢出后,再從0開始計數(shù),定時器和計數(shù)器不同之處是輸入的計數(shù)信號來源不同。計數(shù)器是記錄的外界發(fā)生的事情,而定時器則是由單片機供給一個非常穩(wěn)定的計數(shù)源。

這個計數(shù)源就是由單片機的晶體震蕩器經(jīng)過12分頻后獲得的一個脈沖源。晶體震蕩器的頻率當(dāng)然很準(zhǔn),所以這個計數(shù)脈沖的時間間隔也很準(zhǔn)。實現(xiàn)定時功能,比較方便的方法是利用單片機的定時器計數(shù)器,也可以采用下面的三種方法:軟件定時:軟件定時不占用硬件資源,但占用了cpu的時間,降低了cpu的利用率。采用時基電路定時:例如采用555電路,外界必要的元器件(電阻和電容),即可構(gòu)成硬件定時電路。但在硬件連接好以后,定時值與定時范圍不能由軟件進行修改與控制,即不可編程。采用可編程芯片定時:這種定時芯片的定時值及定時范圍很容易用軟件來確定和修改,此種芯片定時功能強,使用靈活,在單片機的定時計數(shù)器不夠用時,可以考慮進行擴展。7.28051定時/計數(shù)器結(jié)構(gòu)和工作原理★

51系列單片機片內(nèi)有二個十六位定時/計數(shù)器:定時器0(T0)和定時器1(T1)?!飪蓚€定時器都有定時或事件計數(shù)的功能,可用于定時控制、延時、對外部事件計數(shù)和檢測等場合★定時/計數(shù)器實際上是16位加1計數(shù)器。

T0由2個8位持殊功能寄存器TH0和TL0構(gòu)成,

T1由2個8位持殊功能寄存器TH1和TL1構(gòu)成。★每個定時器都可由軟件設(shè)置為定時工作方式或

計數(shù)工作方式。★T0和T1受特殊功能寄存器TMOD和TCON控制。

加1計數(shù)器輸入的計數(shù)脈沖有兩個來源,一個是由系統(tǒng)的時鐘振蕩器輸出脈沖經(jīng)12分頻后送來;一個是T0或T1引腳輸入的外部脈沖源。每來一個脈沖計數(shù)器加1,當(dāng)加到計數(shù)器為全1時,再輸入一個脈沖就使計數(shù)器回零,且計數(shù)器的溢出使TCON中TF0或TF1置1,向CPU發(fā)出中斷請求(定時/計數(shù)器中斷允許時)。如果定時/計數(shù)器工作于定時模式,則表示定時時間已到;如果工作于計數(shù)模式,則表示計數(shù)值已滿。可見,由溢出時計數(shù)器的值減去計數(shù)初值才是加1計數(shù)器的計數(shù)值。1.定時工作方式

★設(shè)置為定時器模式時:加1計數(shù)器是對內(nèi)部機器周期計數(shù)(1個機器周期等于12個振蕩周期,即計數(shù)頻率為晶振頻率的1/12)。

★每經(jīng)過一個機器周期定時器(T0或T1)的數(shù)值加1直至計數(shù)滿產(chǎn)生溢出。★計數(shù)值N乘以機器周期Tcy就是定時時間t

。

計數(shù)值:N=滿計數(shù)值-初始設(shè)定值t=計數(shù)值N×機器周期T如:當(dāng)8051采用12MHz晶體時,每個機器周期為1μs,計5個機器周期即為5μs,即定時5μs。2.計數(shù)工作方式

★設(shè)置為計數(shù)工作方式時,通過引腳T0(P3.4)和T1(P3.5)對外部脈沖信號計數(shù)?!锂?dāng)輸入脈沖信號產(chǎn)生由1至0的下降沿時,定時器的值加1,在每個機器周期CPU采樣T0和T1的輸入電平。若前一個機器周期采樣值為高,下一個機器周期采樣值為低,則計數(shù)器加1?!镉捎跈z測一個1至0的跳變需要二個機器周期,故最高計數(shù)頻率為振蕩頻率的二十四分之一?!镫m然對輸入信號的占空比無特殊要求,但為了確保某個電平在變化之前至少被采樣一次,要求電平保持時間至少是一個完整的機器周期。由T0或T1引腳輸入計數(shù)脈沖。在每個機器周期的S5P2期間,CPU采樣引腳輸入電平。當(dāng)前一機器周期采樣到高電平,下一周期機器采樣到低電平時,則計數(shù)器加1,更新的計數(shù)值在下一個機器周期的S3P1期間裝入計數(shù)器。由于檢測一個從1到0的下降沿需要2個機器周期,因此要求被采樣的電平至少要維持一個機器周期,最高計數(shù)頻率不超過振蕩頻率的1/24,當(dāng)晶振頻率為12MHz時,計數(shù)頻率為1/2MHz,計數(shù)脈沖的周期要大于2s。

7.3定時計數(shù)器的控制寄存器★定時器共有兩個控制寄存器:定時器控制TCON(88H)

定時器工作模式寄存器TMOD(89H)1.工作模式寄存器TMOD(89H)

TMOD用于控制T0和T1的操作模式。其各位的定義如下:TMODD7D6D5D4D3D2D1D0(89H)GATEC/TM1M0GATEC/TM1M0定時器T0

定時器T1★

GATE:門控選擇位

=0,非門控方式,定時/計數(shù)器由內(nèi)部軟件啟動:

TRx=1,啟動定時器工作;

TRx=0,停止定時器工作。

=1,門控方式,定時/計數(shù)器由內(nèi)、外部啟動:

TRx=1,同時必須引腳INTx=1,才啟動。門控位GATE為1時,TRx=1,INTx=1才能啟動定時器。利用這個特性可以測量外部輸入脈沖的寬度?!?/p>

C/T:定時器/計數(shù)器選擇位

C/T=1,計數(shù)方式,通過引腳T0(P3.4)和T1(P3.5)對外部信號進行計數(shù)。

C/T=0,定時方式,對機器周期計數(shù)。

★M1、M0——工作模式選擇位。

由于有M1和M0兩位,可以有四種工作方式。T0有4種工作模式,T1有3種工作模式。定時器/計數(shù)器T1不能工作在模式3。設(shè)置T1的M1M0=11,T1將停止工作。定時器/計數(shù)器的工作模式M1M0工作模式功能介紹00模式013位定時器/計數(shù)器01模式116位定時器/計數(shù)器10模式28位自動重置定時器/計數(shù)器11模式3定時器0:TL0可8位定時器/計數(shù)器,TH0為8位定時器。定時器1:不工作。TMOD各位定義及具體的意義

TF1TR1TF0TR0IE1IT1IE0IT0T1請求有/無

T1工作啟/停T0請求有/無T0工作啟/停INT1請求有/無INT1方式下沿/低電平

INT0請求有/無INT0方式下沿/低電平2.控制寄存器TCON(88H)

TCON寄存器中定時器控制僅用了其中高四位,其意義如下:

★TF1:T1溢出中斷請求標(biāo)志。

TF1=1,T1有溢出中斷請求。

TF1=0,T1無溢出中斷請求。

★TR1:T1運行控制位。

TR1=1,啟動T1工作。

TR1=0,停止T1工作。在程序中用指令“SETBTR1”使TR1位置1,定時器T1便開始計數(shù)。“CLRTR1”使TR1清0.GATE=0時,用軟件使TR1置1,則啟動定時器1,

用軟件使TR1清0,則停止定時器1。GATE=1時,用軟件TR1置1,如果檢測到引腳INT1(P3.3)輸入高電平時啟動定時器1。

★TF0:T0溢出中斷請求標(biāo)志。

TF0=1,T0有溢出中斷請求。

TF0=0,T0無溢出中斷請求。

★TR0:T0運行控制位。

TR0=1,啟動T0工作。

TR0=0,停止T0工作。同TR1定時計數(shù)器的內(nèi)部邏輯電路結(jié)構(gòu)

&>1C/TC/T7.4定時器的四種工作方式

對TMOD寄存器的M1、M0位的設(shè)置,可選擇四種工作方式,即方式0、方式1、方式2和方式3。下面用THX、TLX(X=1或0)表示TH1TL1TH0TL0。

模式0以及定時器T0、T1模式0下的結(jié)構(gòu)模式1以及定時器T0、T1模式1下的結(jié)構(gòu)模式2以及定時器T0、T1模式2下的結(jié)構(gòu)模式3以及定時器T0、T1模式3下的結(jié)構(gòu)

13位定時/計數(shù)器,由TLx的低5位(高3位未用)和THx的8位組成。TLx的低5位溢出時向THx進位,THx溢出時,置位TCON中的TFx標(biāo)志,向CPU發(fā)出中斷請求。1)方式0(M1M0=00)計數(shù)外部脈沖個數(shù):1~8192(213)定時時間:T~8192Tfosc=12MHz,T=1us時,最大定時時間:8.19ms初始化定時/計數(shù)器時,初值N計算:定時機器周期數(shù):N=t/T-------定時時間/機器周期計數(shù)初值:X=213-N

------計數(shù)最大值與計數(shù)值之差GATE=0時,經(jīng)反相后使或門輸出為1,此時僅由TRx控制與門的開啟,與門輸出1時,控制開關(guān)接通,計數(shù)開始;GATE=1時,由INT0引腳信號控制或門的輸出,此時控制與門的開啟由INT0引腳信號和TRx共同控制。

TRx=1時,INT0引腳信號高電平啟動計數(shù),低電平停止計數(shù)。常用來測量外中斷引腳上正脈沖的寬度。

2)方式1(16位定時/計數(shù)器,M1M0=01

)計數(shù)外部脈沖個數(shù)范圍:1~65536(216)定時時間范圍:T~65536T初始化定時/計數(shù)器時,初值N計算:定時機器周期數(shù):N=t/T-------定時時間/機器周期計數(shù)初值:X=216-N

------計數(shù)最大值與計數(shù)值之差3)方式2(自動再裝入8位定時/計數(shù)器,M1M0=00)TLx為8位加1計數(shù)器,THx為8位初值暫存器。TLx計數(shù)溢出時,一方面將TFx置位,另一方面,將THx的內(nèi)容重新裝入TLx,但不影響THx中的內(nèi)容,用于需要重復(fù)定時和計數(shù)的場合,可實現(xiàn)每隔預(yù)定時間發(fā)出控制信號。計數(shù)外部脈沖個數(shù)范圍:1~256(28)定時時間范圍:T~256T初值N計算:定時機器周期數(shù):N=t/T計數(shù)初值:X=28-N4)方式3(M1M0=00)T0分成兩個8位定時/計數(shù)器TL0和TH0;

TL0:既可計數(shù)也可定時,是一個8位定時/計數(shù)器。占用了T0

所有控制位:C/T,TR0,GATE,TF0和INT0、T0引腳;

TH0:只能作為定時器,因為T0已被TL0占用,TH0用T1的控制位:TR1、TF1;T0在方式3時T1的工作模式

如果定時/計數(shù)器T0工作在方式3,T1只能工作在0、1、2方式。此時由于T1的運行控制位TR1及計數(shù)溢出標(biāo)志位TF1已被定時/計數(shù)器T0借用,這時,T1作為串行口的波特率發(fā)生器使用。

當(dāng)作為波特率發(fā)生器使用時,只需要設(shè)置好工作方式,便可自動運行。如要停止工作,只需送入一個把T1設(shè)置為方式3的方式控制字。因為定時/計數(shù)器T1不能在方式3下工作,如果硬把它設(shè)置為方式3,則停止工作。T0在方式3時T1的工作模式(c)T1方式2定時器/計數(shù)器的功能和工作模式的選擇是由工作模式控制寄存器TMOD和定時器控制寄存器TCON來控制的?!?/p>

工作模式控制寄存器TMOD示意圖●定時器控制寄存器TCON示意圖●

4種工作模式的特點1.最大定時時間不同(采用12MHz的晶體)模式0(13位)時:TMAX=8192s=8.192ms。模式1(16位)時:TMAX=65536s=65.536ms。模式2和3(兩個8位)時:TMAX=256s=0.256ms。2.加載方式不同模式0和模式1的最大特點是計數(shù)溢出后,計數(shù)器全為0,因此,循環(huán)定時或計數(shù)時就要反復(fù)設(shè)置計數(shù)初值;模式2可以自動加載計數(shù)初值;模式3適合用于串行口數(shù)據(jù)傳輸率發(fā)生器。小結(jié)任意定時以及計數(shù)的方法:

我們采用預(yù)置數(shù)的辦法,我要計100,那我就先放進65436,再來100個脈沖,就到了65536了。定時也是如此,每個脈沖是1微秒,則計滿65536個脈沖需時65.536毫秒,但現(xiàn)在我只要10毫秒就能了,怎么辦?10個毫秒為10000個微秒,所以,只要在計數(shù)器里面放進55536就可以了。以定時器T0在方式1下定時0.95ms為例,先將65536μs-950μs=64586μs換成十六進制數(shù)FC4AH,然后將此數(shù)的高位FC裝入TH0;再將此數(shù)的低位4A裝入TL0。再進行計數(shù)就可以了。還有一種簡便計算方法,即將設(shè)計時初始值直接代入表中所提供的公式里,如使用定時器T0在模式0下定時1000s,設(shè)計初始值為1000,將1000分兩次代入公式即可。定時計數(shù)器的初始化

在使用定時器/計數(shù)器前,應(yīng)首先對其進行初始化編程。一、定時器的初始化步驟1、設(shè)置TMOD。選擇工作模式和工作方式。2、設(shè)置定時器的計數(shù)初值。將初值寫入TH0和TL0或TH1、TL1。3、如果需要中斷,設(shè)置中斷允許寄存器IE。4、設(shè)置TCON,啟動定時器。可以使用位操作指令。例如:SETBTRx。使用定時器工作之前,先寫入方式、控制寄存器,確定好定時器工作方式:MOVTMOD,#方式字;啟動方式選擇(內(nèi)外共同啟動/內(nèi)啟動) 功能選擇—(計數(shù)/定時)位數(shù)選擇—

(8/13/16位)MOVTHx,#XH

;計算時間常數(shù)X,MOVTLx,#XL;Tx時間常數(shù)初值裝入數(shù)據(jù)寄存器

,(SETBEA ) ;開Tx中斷(SETBETx)SETBTRx

;啟動控制Tx定時器(啟動/停止)定時器初始化編程:在主程序中進行

二、定時器/計數(shù)器初值計算

定時器/計數(shù)器的模式和方式不同,計數(shù)初值也將不同。計數(shù)器的長度為n,則計數(shù)的最大值為2n

。

1、工作于定時方式計數(shù)脈沖由內(nèi)部的時鐘提供,每個機器周期進行加1。設(shè)晶振頻率為fosc,則計數(shù)脈沖的頻率為fosc/12,計數(shù)脈沖周期T=1/(fosc/12)。如果進行定時時間為t,計數(shù)初值為X,則:初值X=2n

-t×fosc/122、工作于計數(shù)方式當(dāng)工作在計數(shù)方式時,對外部脈沖計數(shù)。利用計數(shù)器計數(shù)結(jié)束產(chǎn)生溢出的特性,來計算初值X。則有:X=2n—計數(shù)次數(shù)上節(jié)練習(xí)與回顧1、下面哪一種僅適用于定時器T0()A.方式0B.方式1C.方式2D.方式32、若51單片機的晶振頻率是24MHz,則其內(nèi)部定時器/計數(shù)器利用計數(shù)器對外部輸入脈沖的最高計數(shù)頻率是()A.1MHzB.6MHzC.12MHzD.24MHz3、8031定時/計數(shù)器是否計滿可采用等待中斷的方法進行處理,也可通過對()的查詢方法進行判斷。

A.OV標(biāo)志B.CY標(biāo)志C.中斷標(biāo)志D.奇偶標(biāo)志4、在下列寄存器中,與定時/計數(shù)控制無關(guān)的是()A、TCON(定時控制寄存器)B、TMOD(工作方式控制寄存器)C、SCON(串行控制寄存器)D、IE(中斷允許控制寄存器)答:有四種工作模式:模式0,模式1,模式2,模式3

(1)

模式0:選擇定時器的高8位和低5位組成一個13位定時器/計數(shù)器。TL低5位溢出時向TH進位,TH溢出時向中斷標(biāo)志位TF進位,并申請中斷。

定時時間t=(213-初值)×振蕩周期×12;計數(shù)長度位213=8192個外部脈沖

(2)

模式1:與模式0的唯一差別是寄存器TH和TL以全部16位參與操作。定時時間t=(216-初值)×振蕩周期×12;計數(shù)長度位216=65536個外部脈沖

(3)

模式2:把TL0和TL1配置成一個自動重裝載的8位定時器/計數(shù)器。TL用作8位計數(shù)器,TH用以保存初值。TL計數(shù)溢出時不僅使TF0置1,而且還自動將TH中的內(nèi)容重新裝載到TL中。

定時時間t=(28-初值)×振蕩周期×12;計數(shù)長度位28=256個外部脈沖

(4)

模式3:對T0和T1不大相同

若設(shè)T0位模式3,TL0和TH0被分為兩個相互獨立的8位計數(shù)器。TL0為8位計數(shù)器,功能與模式0和模式1相同,可定時可計數(shù)。

TH0僅用作簡單的內(nèi)部定時功能,它占用了定時器T1的控制位TR1和中斷標(biāo)志位TF1,啟動和關(guān)閉僅受TR1控制。

定時器T1無工作模式3,但T0在工作模式3時T1仍可設(shè)置為0~2。

5、89C51定時器有哪幾種工作模式?有何區(qū)別?6、根據(jù)定時器/計數(shù)器0方式1邏輯結(jié)構(gòu)圖,分析門控位GATE取不同值時,啟動定時器的工作過程。

答:當(dāng)GATE=0:軟件啟動定時器,即用指令使TCON中的TR0置1即可啟動定時器0。GATE=1:軟件和硬件共同啟動定時器,即用指令使TCON中的TR0置1時,只有外部中斷INT0引腳輸入高電平時才能啟動定時器0。7、單片機8031的時鐘頻率為6MHz,若要求定時值分別為0.1ms,1ms,10ms,定時器0工作在模式0、模式1和模式2時,其定時器初值各應(yīng)是多少?

解:

(1)

0.1ms

模式0:

T0低5位01110B=0EH

T0高8位:11111110B=FEH

模式1:模式2:

(2)

1ms

模式0:

T0低5位01100B=0CH

T0高8位:11110000B=F0H

模式1:

模式2:

在此情況下最長定時為512μs,無法一次實現(xiàn)定時1ms,可用0.1ms循環(huán)10次

(3)

10ms

模式0:

T0低5位11000B=18H

T0高8位:01100011B=63H

模式1:

模式2:在此情況下最長定時為512μs,無法一次實現(xiàn)定時10ms,可用0.1ms循環(huán)100次8、3、設(shè)MCS-51單片機fosc=12MHz,要求T0定時150μs,分別計算采用定時方式0、方式1和方式2時的定時初值。答:方式0的定時初值:IF6AH方式1的定時初值:FF6AH方式2的定時初值:6AH9、

設(shè)MCS-51單片機fosc=6MHz,問單片機處于不同的工作方式時,最大定時范圍是多少?

答:方式0的最大定時范圍:131,072μs方式1的最大定時范圍:16,384μs方式2的最大定時范圍:512μs例1

設(shè)單片機的振蕩頻率為12MHz,用定時器/計數(shù)器0的模式1編程,在P1.0引腳產(chǎn)生一個周期為1000μs的方波,定時器T0采用中斷的處理方式。定時器的分析過程。工作方式選擇需要產(chǎn)生周期信號時,選擇定時方式。定時時間到了對輸出端進行周期性的輸出即可。

工作模式選擇

根據(jù)定時時間長短選擇工作模式。

首選模式2,可以省略重裝初值操作。定時器的應(yīng)用舉例

定時時間計算:周期為1000μs的方波要求定時器的定時時間為500μs,每次溢出時,將P1.0引腳的輸出取反,就可以在P1.0上產(chǎn)生所需要的方波。定時初值計算:振蕩頻率為12MHz,則機器周期為1μs。

設(shè)定時初值為X,(65536-X)×1μs=500μs

X=65036=0FE0CH定時器的初值為:TH0=0FEH,TL0=0CH

C語言程序:#include<reg52.h> //包含特殊功能寄存器庫sbit P1_0=P1^0; //進行位定義voidmain() { TMOD=0x01; //T0做定時器,工作在模式1 TL0=0x0c; TH0=0xfe; //設(shè)置定時器的初值

ET0=1; //允許T0中斷

EA=1; //開中斷

TR0=1; //啟動定時器

while(1); //等待中斷}

voidtime0_int(void)interrupt1{ //中斷服務(wù)程序

TL0=0x0c; TH0=0xfe; //定時器重賦初值

P1_0=~P1_0; //P1.0取反,輸出方波}

匯編語言程序:

ORG 0000H SJMP MAIN ORG 000BH LJMP TIME0MAIN:MOV TMOD,#01H ;T0定時,模式1 MOV TL0,#0CH ;置定時初值

MOV TH0,#0FEH SETB ET0 ;定時器T0開中斷

SETB EA ;CPU開中斷

SETB TR0 ;啟動定時器T0 SJMP $ ;等待定時器溢出TIME0:MOV TL0,#0CH ;中斷服務(wù)程序

MOV TH0,#0FEH ;重裝定時初值

CPL P1.0 ;P1.0取反,輸出方波

RETI ;中斷返回

END例2

設(shè)單片機的振蕩頻率為12MHz,用定時器/計數(shù)器0編程實現(xiàn)從P1.0輸出周期為500μs的方波。分析:定時時間:從P1.0輸出周期為500μs的方波。定時250μs,定時結(jié)束對P1.0取反。

模式選擇:當(dāng)系統(tǒng)時鐘頻率為12MHz,機器周期為1μs,定時器/計數(shù)器0可以選擇模式0、模式1和模式2。模式2最大的定時時間為256μs,滿足250μs的定時要求,選擇模式2(1)定時初值計算

(256-X)×1μs=250μs X=6; 則TH0=TL0=6采用中斷處理方式的程序:

C語言程序:#include <reg52.h>//包含特殊功能寄存器庫

sbit P1_0=P1^0;void main(){ TMOD=0x02; //選擇定時器的工作模式

TL0=0x06; TH0=0x06; //為定時器賦初值

ET0=1; //允許定時0中斷

EA=1; TR0=1; //啟動定時器0 while(1); //等待中斷} voidtime0_int(void)interrupt1 { P1_0=~P1_0;} 匯編語言程序:

ORG 0000H LJMP MAIN ORG 000BH ;中斷處理程序 CPL P1.0 RETI

ORG 0030H ;主程序

MAIN: MOV TMOD,#02H MOV TL0,#06H MOV TH0,#06H

SETB ET0 ;允許定時器0中斷

SETB EA ;允許CPU中斷 SETB TR0 ;啟動定時器0 SJMP $ ;等待中斷

END

采用查詢方式處理的程序: C語言程序:#include<reg52.h> //特殊功能寄存器庫sbit P1_0=P1^0;voidmain(){ TMOD=0x02; TL0=0x06; TH0=0x06;TR0=1;

while(1) { while(!TF0); //查詢計數(shù)溢出

TF0=0; P1_0=~P1_0; }}

匯編語言程序:MAIN: MOV TMOD,#02H ;主程序

MOV TL0,#06H MOV TH0,#06H SETB TR0LOOP: JNB TF0,$ ;查詢計數(shù)溢出

CLR TF0 CPL P1.0

SJMP LOOP END

門控位的應(yīng)用

門控位GATE為1時,TRx=1,INTx=1才能啟動定時器。利用這個特性可以測量外部輸入脈沖的寬度。例3利用T0門控位測試INT0引腳上出現(xiàn)的正脈沖寬度,已知晶振頻率為12MHz,將所測得值最高位存入片內(nèi)71H單元,低位存入70H單元。解:設(shè)外部脈沖由(P3.2)輸入,T0工作于定時方式1(16位計數(shù)),GATE設(shè)為1。測試時,應(yīng)在INT0低電平時,設(shè)置TR0為1(16位計數(shù));當(dāng)INT0變?yōu)楦唠娖綍r,就啟動計數(shù);再次變低時,停止計數(shù)。此計數(shù)值與機器周期的乘積即為被測正脈沖的寬度。因fosc=12MHZ,機器周期為1us,測試過程如下。源程序如下:

MOVTMOD,#09H;設(shè)T0為方式1MOVTL0,#00H;設(shè)計初值取最大值

MOVTH0,#00HMOVR0,#70HJBP3.2,$;等P3.2(INT0)變低

SETBTR0;啟動T0準(zhǔn)備工作

JNBP3.2,$;等待P3.2(INT0)JBP3.2,$;等待P3.2(INT0)CLRTR0;停止計數(shù)T0從0開始計數(shù)INT0

09H(TMOD)1TR0

0TR0T0停止計數(shù)

MOV@R0,TL0;存放結(jié)果

INCR0MOV@R0,TH0SJMP$

讀者不難編出C語言程序。這種方案被測脈沖的寬度最大為65535個機器周期

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論