版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第7章單片機(jī)的定時(shí)/計(jì)數(shù)器單片機(jī)原理、接口及應(yīng)用本章重點(diǎn)★7.1定時(shí)計(jì)數(shù)器基本知識(shí)★7.2定時(shí)計(jì)數(shù)器結(jié)構(gòu)和工作原理★7.3定時(shí)計(jì)數(shù)器的控制寄存器★7.4定時(shí)器的四種工作方式
★7.5定時(shí)計(jì)數(shù)器的應(yīng)用編程7.1定時(shí)計(jì)數(shù)器基本知識(shí)8051單片機(jī)中有兩個(gè)計(jì)數(shù)器T0和T1,這兩個(gè)計(jì)數(shù)器分別是由兩個(gè)8位的RAM單元組成的,即每個(gè)計(jì)數(shù)器都是16位的計(jì)數(shù)器,最大的計(jì)數(shù)量是65536。8031中的計(jì)數(shù)器除了能作為計(jì)數(shù)之用外,還能用作時(shí)鐘,時(shí)鐘的用途當(dāng)然很大,如打鈴器,電視機(jī)定時(shí)關(guān)機(jī),空調(diào)定時(shí)開關(guān)等等。定時(shí)器和計(jì)數(shù)器的原理是一樣的,都是進(jìn)行計(jì)數(shù)操作,每次加1,加滿溢出后,再?gòu)?開始計(jì)數(shù),定時(shí)器和計(jì)數(shù)器不同之處是輸入的計(jì)數(shù)信號(hào)來(lái)源不同。計(jì)數(shù)器是記錄的外界發(fā)生的事情,而定時(shí)器則是由單片機(jī)供給一個(gè)非常穩(wěn)定的計(jì)數(shù)源。
這個(gè)計(jì)數(shù)源就是由單片機(jī)的晶體震蕩器經(jīng)過12分頻后獲得的一個(gè)脈沖源。晶體震蕩器的頻率當(dāng)然很準(zhǔn),所以這個(gè)計(jì)數(shù)脈沖的時(shí)間間隔也很準(zhǔn)。實(shí)現(xiàn)定時(shí)功能,比較方便的方法是利用單片機(jī)的定時(shí)器計(jì)數(shù)器,也可以采用下面的三種方法:軟件定時(shí):軟件定時(shí)不占用硬件資源,但占用了cpu的時(shí)間,降低了cpu的利用率。采用時(shí)基電路定時(shí):例如采用555電路,外界必要的元器件(電阻和電容),即可構(gòu)成硬件定時(shí)電路。但在硬件連接好以后,定時(shí)值與定時(shí)范圍不能由軟件進(jìn)行修改與控制,即不可編程。采用可編程芯片定時(shí):這種定時(shí)芯片的定時(shí)值及定時(shí)范圍很容易用軟件來(lái)確定和修改,此種芯片定時(shí)功能強(qiáng),使用靈活,在單片機(jī)的定時(shí)計(jì)數(shù)器不夠用時(shí),可以考慮進(jìn)行擴(kuò)展。7.28051定時(shí)/計(jì)數(shù)器結(jié)構(gòu)和工作原理★
51系列單片機(jī)片內(nèi)有二個(gè)十六位定時(shí)/計(jì)數(shù)器:定時(shí)器0(T0)和定時(shí)器1(T1)。★兩個(gè)定時(shí)器都有定時(shí)或事件計(jì)數(shù)的功能,可用于定時(shí)控制、延時(shí)、對(duì)外部事件計(jì)數(shù)和檢測(cè)等場(chǎng)合★定時(shí)/計(jì)數(shù)器實(shí)際上是16位加1計(jì)數(shù)器。
T0由2個(gè)8位持殊功能寄存器TH0和TL0構(gòu)成,
T1由2個(gè)8位持殊功能寄存器TH1和TL1構(gòu)成?!锩總€(gè)定時(shí)器都可由軟件設(shè)置為定時(shí)工作方式或
計(jì)數(shù)工作方式?!颰0和T1受特殊功能寄存器TMOD和TCON控制。
加1計(jì)數(shù)器輸入的計(jì)數(shù)脈沖有兩個(gè)來(lái)源,一個(gè)是由系統(tǒng)的時(shí)鐘振蕩器輸出脈沖經(jīng)12分頻后送來(lái);一個(gè)是T0或T1引腳輸入的外部脈沖源。每來(lái)一個(gè)脈沖計(jì)數(shù)器加1,當(dāng)加到計(jì)數(shù)器為全1時(shí),再輸入一個(gè)脈沖就使計(jì)數(shù)器回零,且計(jì)數(shù)器的溢出使TCON中TF0或TF1置1,向CPU發(fā)出中斷請(qǐng)求(定時(shí)/計(jì)數(shù)器中斷允許時(shí))。如果定時(shí)/計(jì)數(shù)器工作于定時(shí)模式,則表示定時(shí)時(shí)間已到;如果工作于計(jì)數(shù)模式,則表示計(jì)數(shù)值已滿??梢?,由溢出時(shí)計(jì)數(shù)器的值減去計(jì)數(shù)初值才是加1計(jì)數(shù)器的計(jì)數(shù)值。1.定時(shí)工作方式
★設(shè)置為定時(shí)器模式時(shí):加1計(jì)數(shù)器是對(duì)內(nèi)部機(jī)器周期計(jì)數(shù)(1個(gè)機(jī)器周期等于12個(gè)振蕩周期,即計(jì)數(shù)頻率為晶振頻率的1/12)。
★每經(jīng)過一個(gè)機(jī)器周期定時(shí)器(T0或T1)的數(shù)值加1直至計(jì)數(shù)滿產(chǎn)生溢出?!镉?jì)數(shù)值N乘以機(jī)器周期Tcy就是定時(shí)時(shí)間t
。
計(jì)數(shù)值:N=滿計(jì)數(shù)值-初始設(shè)定值t=計(jì)數(shù)值N×機(jī)器周期T如:當(dāng)8051采用12MHz晶體時(shí),每個(gè)機(jī)器周期為1μs,計(jì)5個(gè)機(jī)器周期即為5μs,即定時(shí)5μs。2.計(jì)數(shù)工作方式
★設(shè)置為計(jì)數(shù)工作方式時(shí),通過引腳T0(P3.4)和T1(P3.5)對(duì)外部脈沖信號(hào)計(jì)數(shù)?!锂?dāng)輸入脈沖信號(hào)產(chǎn)生由1至0的下降沿時(shí),定時(shí)器的值加1,在每個(gè)機(jī)器周期CPU采樣T0和T1的輸入電平。若前一個(gè)機(jī)器周期采樣值為高,下一個(gè)機(jī)器周期采樣值為低,則計(jì)數(shù)器加1?!镉捎跈z測(cè)一個(gè)1至0的跳變需要二個(gè)機(jī)器周期,故最高計(jì)數(shù)頻率為振蕩頻率的二十四分之一。★雖然對(duì)輸入信號(hào)的占空比無(wú)特殊要求,但為了確保某個(gè)電平在變化之前至少被采樣一次,要求電平保持時(shí)間至少是一個(gè)完整的機(jī)器周期。由T0或T1引腳輸入計(jì)數(shù)脈沖。在每個(gè)機(jī)器周期的S5P2期間,CPU采樣引腳輸入電平。當(dāng)前一機(jī)器周期采樣到高電平,下一周期機(jī)器采樣到低電平時(shí),則計(jì)數(shù)器加1,更新的計(jì)數(shù)值在下一個(gè)機(jī)器周期的S3P1期間裝入計(jì)數(shù)器。由于檢測(cè)一個(gè)從1到0的下降沿需要2個(gè)機(jī)器周期,因此要求被采樣的電平至少要維持一個(gè)機(jī)器周期,最高計(jì)數(shù)頻率不超過振蕩頻率的1/24,當(dāng)晶振頻率為12MHz時(shí),計(jì)數(shù)頻率為1/2MHz,計(jì)數(shù)脈沖的周期要大于2s。
7.3定時(shí)計(jì)數(shù)器的控制寄存器★定時(shí)器共有兩個(gè)控制寄存器:定時(shí)器控制TCON(88H)
定時(shí)器工作模式寄存器TMOD(89H)1.工作模式寄存器TMOD(89H)
TMOD用于控制T0和T1的操作模式。其各位的定義如下:TMODD7D6D5D4D3D2D1D0(89H)GATEC/TM1M0GATEC/TM1M0定時(shí)器T0
定時(shí)器T1★
GATE:門控選擇位
=0,非門控方式,定時(shí)/計(jì)數(shù)器由內(nèi)部軟件啟動(dòng):
TRx=1,啟動(dòng)定時(shí)器工作;
TRx=0,停止定時(shí)器工作。
=1,門控方式,定時(shí)/計(jì)數(shù)器由內(nèi)、外部啟動(dòng):
TRx=1,同時(shí)必須引腳INTx=1,才啟動(dòng)。門控位GATE為1時(shí),TRx=1,INTx=1才能啟動(dòng)定時(shí)器。利用這個(gè)特性可以測(cè)量外部輸入脈沖的寬度。★
C/T:定時(shí)器/計(jì)數(shù)器選擇位
C/T=1,計(jì)數(shù)方式,通過引腳T0(P3.4)和T1(P3.5)對(duì)外部信號(hào)進(jìn)行計(jì)數(shù)。
C/T=0,定時(shí)方式,對(duì)機(jī)器周期計(jì)數(shù)。
★M1、M0——工作模式選擇位。
由于有M1和M0兩位,可以有四種工作方式。T0有4種工作模式,T1有3種工作模式。定時(shí)器/計(jì)數(shù)器T1不能工作在模式3。設(shè)置T1的M1M0=11,T1將停止工作。定時(shí)器/計(jì)數(shù)器的工作模式M1M0工作模式功能介紹00模式013位定時(shí)器/計(jì)數(shù)器01模式116位定時(shí)器/計(jì)數(shù)器10模式28位自動(dòng)重置定時(shí)器/計(jì)數(shù)器11模式3定時(shí)器0:TL0可8位定時(shí)器/計(jì)數(shù)器,TH0為8位定時(shí)器。定時(shí)器1:不工作。TMOD各位定義及具體的意義
TF1TR1TF0TR0IE1IT1IE0IT0T1請(qǐng)求有/無(wú)
T1工作啟/停T0請(qǐng)求有/無(wú)T0工作啟/停INT1請(qǐng)求有/無(wú)INT1方式下沿/低電平
INT0請(qǐng)求有/無(wú)INT0方式下沿/低電平2.控制寄存器TCON(88H)
TCON寄存器中定時(shí)器控制僅用了其中高四位,其意義如下:
★TF1:T1溢出中斷請(qǐng)求標(biāo)志。
TF1=1,T1有溢出中斷請(qǐng)求。
TF1=0,T1無(wú)溢出中斷請(qǐng)求。
★TR1:T1運(yùn)行控制位。
TR1=1,啟動(dòng)T1工作。
TR1=0,停止T1工作。在程序中用指令“SETBTR1”使TR1位置1,定時(shí)器T1便開始計(jì)數(shù)。“CLRTR1”使TR1清0.GATE=0時(shí),用軟件使TR1置1,則啟動(dòng)定時(shí)器1,
用軟件使TR1清0,則停止定時(shí)器1。GATE=1時(shí),用軟件TR1置1,如果檢測(cè)到引腳INT1(P3.3)輸入高電平時(shí)啟動(dòng)定時(shí)器1。
★TF0:T0溢出中斷請(qǐng)求標(biāo)志。
TF0=1,T0有溢出中斷請(qǐng)求。
TF0=0,T0無(wú)溢出中斷請(qǐng)求。
★TR0:T0運(yùn)行控制位。
TR0=1,啟動(dòng)T0工作。
TR0=0,停止T0工作。同TR1定時(shí)計(jì)數(shù)器的內(nèi)部邏輯電路結(jié)構(gòu)
&>1C/TC/T7.4定時(shí)器的四種工作方式
對(duì)TMOD寄存器的M1、M0位的設(shè)置,可選擇四種工作方式,即方式0、方式1、方式2和方式3。下面用THX、TLX(X=1或0)表示TH1TL1TH0TL0。
模式0以及定時(shí)器T0、T1模式0下的結(jié)構(gòu)模式1以及定時(shí)器T0、T1模式1下的結(jié)構(gòu)模式2以及定時(shí)器T0、T1模式2下的結(jié)構(gòu)模式3以及定時(shí)器T0、T1模式3下的結(jié)構(gòu)
13位定時(shí)/計(jì)數(shù)器,由TLx的低5位(高3位未用)和THx的8位組成。TLx的低5位溢出時(shí)向THx進(jìn)位,THx溢出時(shí),置位TCON中的TFx標(biāo)志,向CPU發(fā)出中斷請(qǐng)求。1)方式0(M1M0=00)計(jì)數(shù)外部脈沖個(gè)數(shù):1~8192(213)定時(shí)時(shí)間:T~8192Tfosc=12MHz,T=1us時(shí),最大定時(shí)時(shí)間:8.19ms初始化定時(shí)/計(jì)數(shù)器時(shí),初值N計(jì)算:定時(shí)機(jī)器周期數(shù):N=t/T-------定時(shí)時(shí)間/機(jī)器周期計(jì)數(shù)初值:X=213-N
------計(jì)數(shù)最大值與計(jì)數(shù)值之差GATE=0時(shí),經(jīng)反相后使或門輸出為1,此時(shí)僅由TRx控制與門的開啟,與門輸出1時(shí),控制開關(guān)接通,計(jì)數(shù)開始;GATE=1時(shí),由INT0引腳信號(hào)控制或門的輸出,此時(shí)控制與門的開啟由INT0引腳信號(hào)和TRx共同控制。
TRx=1時(shí),INT0引腳信號(hào)高電平啟動(dòng)計(jì)數(shù),低電平停止計(jì)數(shù)。常用來(lái)測(cè)量外中斷引腳上正脈沖的寬度。
2)方式1(16位定時(shí)/計(jì)數(shù)器,M1M0=01
)計(jì)數(shù)外部脈沖個(gè)數(shù)范圍:1~65536(216)定時(shí)時(shí)間范圍:T~65536T初始化定時(shí)/計(jì)數(shù)器時(shí),初值N計(jì)算:定時(shí)機(jī)器周期數(shù):N=t/T-------定時(shí)時(shí)間/機(jī)器周期計(jì)數(shù)初值:X=216-N
------計(jì)數(shù)最大值與計(jì)數(shù)值之差3)方式2(自動(dòng)再裝入8位定時(shí)/計(jì)數(shù)器,M1M0=00)TLx為8位加1計(jì)數(shù)器,THx為8位初值暫存器。TLx計(jì)數(shù)溢出時(shí),一方面將TFx置位,另一方面,將THx的內(nèi)容重新裝入TLx,但不影響THx中的內(nèi)容,用于需要重復(fù)定時(shí)和計(jì)數(shù)的場(chǎng)合,可實(shí)現(xiàn)每隔預(yù)定時(shí)間發(fā)出控制信號(hào)。計(jì)數(shù)外部脈沖個(gè)數(shù)范圍:1~256(28)定時(shí)時(shí)間范圍:T~256T初值N計(jì)算:定時(shí)機(jī)器周期數(shù):N=t/T計(jì)數(shù)初值:X=28-N4)方式3(M1M0=00)T0分成兩個(gè)8位定時(shí)/計(jì)數(shù)器TL0和TH0;
TL0:既可計(jì)數(shù)也可定時(shí),是一個(gè)8位定時(shí)/計(jì)數(shù)器。占用了T0
所有控制位:C/T,TR0,GATE,TF0和INT0、T0引腳;
TH0:只能作為定時(shí)器,因?yàn)門0已被TL0占用,TH0用T1的控制位:TR1、TF1;T0在方式3時(shí)T1的工作模式
如果定時(shí)/計(jì)數(shù)器T0工作在方式3,T1只能工作在0、1、2方式。此時(shí)由于T1的運(yùn)行控制位TR1及計(jì)數(shù)溢出標(biāo)志位TF1已被定時(shí)/計(jì)數(shù)器T0借用,這時(shí),T1作為串行口的波特率發(fā)生器使用。
當(dāng)作為波特率發(fā)生器使用時(shí),只需要設(shè)置好工作方式,便可自動(dòng)運(yùn)行。如要停止工作,只需送入一個(gè)把T1設(shè)置為方式3的方式控制字。因?yàn)槎〞r(shí)/計(jì)數(shù)器T1不能在方式3下工作,如果硬把它設(shè)置為方式3,則停止工作。T0在方式3時(shí)T1的工作模式(c)T1方式2定時(shí)器/計(jì)數(shù)器的功能和工作模式的選擇是由工作模式控制寄存器TMOD和定時(shí)器控制寄存器TCON來(lái)控制的?!?/p>
工作模式控制寄存器TMOD示意圖●定時(shí)器控制寄存器TCON示意圖●
4種工作模式的特點(diǎn)1.最大定時(shí)時(shí)間不同(采用12MHz的晶體)模式0(13位)時(shí):TMAX=8192s=8.192ms。模式1(16位)時(shí):TMAX=65536s=65.536ms。模式2和3(兩個(gè)8位)時(shí):TMAX=256s=0.256ms。2.加載方式不同模式0和模式1的最大特點(diǎn)是計(jì)數(shù)溢出后,計(jì)數(shù)器全為0,因此,循環(huán)定時(shí)或計(jì)數(shù)時(shí)就要反復(fù)設(shè)置計(jì)數(shù)初值;模式2可以自動(dòng)加載計(jì)數(shù)初值;模式3適合用于串行口數(shù)據(jù)傳輸率發(fā)生器。小結(jié)任意定時(shí)以及計(jì)數(shù)的方法:
我們采用預(yù)置數(shù)的辦法,我要計(jì)100,那我就先放進(jìn)65436,再來(lái)100個(gè)脈沖,就到了65536了。定時(shí)也是如此,每個(gè)脈沖是1微秒,則計(jì)滿65536個(gè)脈沖需時(shí)65.536毫秒,但現(xiàn)在我只要10毫秒就能了,怎么辦?10個(gè)毫秒為10000個(gè)微秒,所以,只要在計(jì)數(shù)器里面放進(jìn)55536就可以了。以定時(shí)器T0在方式1下定時(shí)0.95ms為例,先將65536μs-950μs=64586μs換成十六進(jìn)制數(shù)FC4AH,然后將此數(shù)的高位FC裝入TH0;再將此數(shù)的低位4A裝入TL0。再進(jìn)行計(jì)數(shù)就可以了。還有一種簡(jiǎn)便計(jì)算方法,即將設(shè)計(jì)時(shí)初始值直接代入表中所提供的公式里,如使用定時(shí)器T0在模式0下定時(shí)1000s,設(shè)計(jì)初始值為1000,將1000分兩次代入公式即可。定時(shí)計(jì)數(shù)器的初始化
在使用定時(shí)器/計(jì)數(shù)器前,應(yīng)首先對(duì)其進(jìn)行初始化編程。一、定時(shí)器的初始化步驟1、設(shè)置TMOD。選擇工作模式和工作方式。2、設(shè)置定時(shí)器的計(jì)數(shù)初值。將初值寫入TH0和TL0或TH1、TL1。3、如果需要中斷,設(shè)置中斷允許寄存器IE。4、設(shè)置TCON,啟動(dòng)定時(shí)器。可以使用位操作指令。例如:SETBTRx。使用定時(shí)器工作之前,先寫入方式、控制寄存器,確定好定時(shí)器工作方式:MOVTMOD,#方式字;啟動(dòng)方式選擇(內(nèi)外共同啟動(dòng)/內(nèi)啟動(dòng)) 功能選擇—(計(jì)數(shù)/定時(shí))位數(shù)選擇—
(8/13/16位)MOVTHx,#XH
;計(jì)算時(shí)間常數(shù)X,MOVTLx,#XL;Tx時(shí)間常數(shù)初值裝入數(shù)據(jù)寄存器
,(SETBEA ) ;開Tx中斷(SETBETx)SETBTRx
;啟動(dòng)控制Tx定時(shí)器(啟動(dòng)/停止)定時(shí)器初始化編程:在主程序中進(jìn)行
二、定時(shí)器/計(jì)數(shù)器初值計(jì)算
定時(shí)器/計(jì)數(shù)器的模式和方式不同,計(jì)數(shù)初值也將不同。計(jì)數(shù)器的長(zhǎng)度為n,則計(jì)數(shù)的最大值為2n
。
1、工作于定時(shí)方式計(jì)數(shù)脈沖由內(nèi)部的時(shí)鐘提供,每個(gè)機(jī)器周期進(jìn)行加1。設(shè)晶振頻率為fosc,則計(jì)數(shù)脈沖的頻率為fosc/12,計(jì)數(shù)脈沖周期T=1/(fosc/12)。如果進(jìn)行定時(shí)時(shí)間為t,計(jì)數(shù)初值為X,則:初值X=2n
-t×fosc/122、工作于計(jì)數(shù)方式當(dāng)工作在計(jì)數(shù)方式時(shí),對(duì)外部脈沖計(jì)數(shù)。利用計(jì)數(shù)器計(jì)數(shù)結(jié)束產(chǎn)生溢出的特性,來(lái)計(jì)算初值X。則有:X=2n—計(jì)數(shù)次數(shù)上節(jié)練習(xí)與回顧1、下面哪一種僅適用于定時(shí)器T0()A.方式0B.方式1C.方式2D.方式32、若51單片機(jī)的晶振頻率是24MHz,則其內(nèi)部定時(shí)器/計(jì)數(shù)器利用計(jì)數(shù)器對(duì)外部輸入脈沖的最高計(jì)數(shù)頻率是()A.1MHzB.6MHzC.12MHzD.24MHz3、8031定時(shí)/計(jì)數(shù)器是否計(jì)滿可采用等待中斷的方法進(jìn)行處理,也可通過對(duì)()的查詢方法進(jìn)行判斷。
A.OV標(biāo)志B.CY標(biāo)志C.中斷標(biāo)志D.奇偶標(biāo)志4、在下列寄存器中,與定時(shí)/計(jì)數(shù)控制無(wú)關(guān)的是()A、TCON(定時(shí)控制寄存器)B、TMOD(工作方式控制寄存器)C、SCON(串行控制寄存器)D、IE(中斷允許控制寄存器)答:有四種工作模式:模式0,模式1,模式2,模式3
(1)
模式0:選擇定時(shí)器的高8位和低5位組成一個(gè)13位定時(shí)器/計(jì)數(shù)器。TL低5位溢出時(shí)向TH進(jìn)位,TH溢出時(shí)向中斷標(biāo)志位TF進(jìn)位,并申請(qǐng)中斷。
定時(shí)時(shí)間t=(213-初值)×振蕩周期×12;計(jì)數(shù)長(zhǎng)度位213=8192個(gè)外部脈沖
(2)
模式1:與模式0的唯一差別是寄存器TH和TL以全部16位參與操作。定時(shí)時(shí)間t=(216-初值)×振蕩周期×12;計(jì)數(shù)長(zhǎng)度位216=65536個(gè)外部脈沖
(3)
模式2:把TL0和TL1配置成一個(gè)自動(dòng)重裝載的8位定時(shí)器/計(jì)數(shù)器。TL用作8位計(jì)數(shù)器,TH用以保存初值。TL計(jì)數(shù)溢出時(shí)不僅使TF0置1,而且還自動(dòng)將TH中的內(nèi)容重新裝載到TL中。
定時(shí)時(shí)間t=(28-初值)×振蕩周期×12;計(jì)數(shù)長(zhǎng)度位28=256個(gè)外部脈沖
(4)
模式3:對(duì)T0和T1不大相同
若設(shè)T0位模式3,TL0和TH0被分為兩個(gè)相互獨(dú)立的8位計(jì)數(shù)器。TL0為8位計(jì)數(shù)器,功能與模式0和模式1相同,可定時(shí)可計(jì)數(shù)。
TH0僅用作簡(jiǎn)單的內(nèi)部定時(shí)功能,它占用了定時(shí)器T1的控制位TR1和中斷標(biāo)志位TF1,啟動(dòng)和關(guān)閉僅受TR1控制。
定時(shí)器T1無(wú)工作模式3,但T0在工作模式3時(shí)T1仍可設(shè)置為0~2。
5、89C51定時(shí)器有哪幾種工作模式?有何區(qū)別?6、根據(jù)定時(shí)器/計(jì)數(shù)器0方式1邏輯結(jié)構(gòu)圖,分析門控位GATE取不同值時(shí),啟動(dòng)定時(shí)器的工作過程。
答:當(dāng)GATE=0:軟件啟動(dòng)定時(shí)器,即用指令使TCON中的TR0置1即可啟動(dòng)定時(shí)器0。GATE=1:軟件和硬件共同啟動(dòng)定時(shí)器,即用指令使TCON中的TR0置1時(shí),只有外部中斷INT0引腳輸入高電平時(shí)才能啟動(dòng)定時(shí)器0。7、單片機(jī)8031的時(shí)鐘頻率為6MHz,若要求定時(shí)值分別為0.1ms,1ms,10ms,定時(shí)器0工作在模式0、模式1和模式2時(shí),其定時(shí)器初值各應(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:
在此情況下最長(zhǎng)定時(shí)為512μs,無(wú)法一次實(shí)現(xiàn)定時(shí)1ms,可用0.1ms循環(huán)10次
(3)
10ms
模式0:
T0低5位11000B=18H
T0高8位:01100011B=63H
模式1:
模式2:在此情況下最長(zhǎng)定時(shí)為512μs,無(wú)法一次實(shí)現(xiàn)定時(shí)10ms,可用0.1ms循環(huán)100次8、3、設(shè)MCS-51單片機(jī)fosc=12MHz,要求T0定時(shí)150μs,分別計(jì)算采用定時(shí)方式0、方式1和方式2時(shí)的定時(shí)初值。答:方式0的定時(shí)初值:IF6AH方式1的定時(shí)初值:FF6AH方式2的定時(shí)初值:6AH9、
設(shè)MCS-51單片機(jī)fosc=6MHz,問單片機(jī)處于不同的工作方式時(shí),最大定時(shí)范圍是多少?
答:方式0的最大定時(shí)范圍:131,072μs方式1的最大定時(shí)范圍:16,384μs方式2的最大定時(shí)范圍:512μs例1
設(shè)單片機(jī)的振蕩頻率為12MHz,用定時(shí)器/計(jì)數(shù)器0的模式1編程,在P1.0引腳產(chǎn)生一個(gè)周期為1000μs的方波,定時(shí)器T0采用中斷的處理方式。定時(shí)器的分析過程。工作方式選擇需要產(chǎn)生周期信號(hào)時(shí),選擇定時(shí)方式。定時(shí)時(shí)間到了對(duì)輸出端進(jìn)行周期性的輸出即可。
工作模式選擇
根據(jù)定時(shí)時(shí)間長(zhǎng)短選擇工作模式。
首選模式2,可以省略重裝初值操作。定時(shí)器的應(yīng)用舉例
定時(shí)時(shí)間計(jì)算:周期為1000μs的方波要求定時(shí)器的定時(shí)時(shí)間為500μs,每次溢出時(shí),將P1.0引腳的輸出取反,就可以在P1.0上產(chǎn)生所需要的方波。定時(shí)初值計(jì)算:振蕩頻率為12MHz,則機(jī)器周期為1μs。
設(shè)定時(shí)初值為X,(65536-X)×1μs=500μs
X=65036=0FE0CH定時(shí)器的初值為:TH0=0FEH,TL0=0CH
C語(yǔ)言程序:#include<reg52.h> //包含特殊功能寄存器庫(kù)sbit P1_0=P1^0; //進(jìn)行位定義voidmain() { TMOD=0x01; //T0做定時(shí)器,工作在模式1 TL0=0x0c; TH0=0xfe; //設(shè)置定時(shí)器的初值
ET0=1; //允許T0中斷
EA=1; //開中斷
TR0=1; //啟動(dòng)定時(shí)器
while(1); //等待中斷}
voidtime0_int(void)interrupt1{ //中斷服務(wù)程序
TL0=0x0c; TH0=0xfe; //定時(shí)器重賦初值
P1_0=~P1_0; //P1.0取反,輸出方波}
匯編語(yǔ)言程序:
ORG 0000H SJMP MAIN ORG 000BH LJMP TIME0MAIN:MOV TMOD,#01H ;T0定時(shí),模式1 MOV TL0,#0CH ;置定時(shí)初值
MOV TH0,#0FEH SETB ET0 ;定時(shí)器T0開中斷
SETB EA ;CPU開中斷
SETB TR0 ;啟動(dòng)定時(shí)器T0 SJMP $ ;等待定時(shí)器溢出TIME0:MOV TL0,#0CH ;中斷服務(wù)程序
MOV TH0,#0FEH ;重裝定時(shí)初值
CPL P1.0 ;P1.0取反,輸出方波
RETI ;中斷返回
END例2
設(shè)單片機(jī)的振蕩頻率為12MHz,用定時(shí)器/計(jì)數(shù)器0編程實(shí)現(xiàn)從P1.0輸出周期為500μs的方波。分析:定時(shí)時(shí)間:從P1.0輸出周期為500μs的方波。定時(shí)250μs,定時(shí)結(jié)束對(duì)P1.0取反。
模式選擇:當(dāng)系統(tǒng)時(shí)鐘頻率為12MHz,機(jī)器周期為1μs,定時(shí)器/計(jì)數(shù)器0可以選擇模式0、模式1和模式2。模式2最大的定時(shí)時(shí)間為256μs,滿足250μs的定時(shí)要求,選擇模式2(1)定時(shí)初值計(jì)算
(256-X)×1μs=250μs X=6; 則TH0=TL0=6采用中斷處理方式的程序:
C語(yǔ)言程序:#include <reg52.h>//包含特殊功能寄存器庫(kù)
sbit P1_0=P1^0;void main(){ TMOD=0x02; //選擇定時(shí)器的工作模式
TL0=0x06; TH0=0x06; //為定時(shí)器賦初值
ET0=1; //允許定時(shí)0中斷
EA=1; TR0=1; //啟動(dòng)定時(shí)器0 while(1); //等待中斷} voidtime0_int(void)interrupt1 { P1_0=~P1_0;} 匯編語(yǔ)言程序:
ORG 0000H LJMP MAIN ORG 000BH ;中斷處理程序 CPL P1.0 RETI
ORG 0030H ;主程序
MAIN: MOV TMOD,#02H MOV TL0,#06H MOV TH0,#06H
SETB ET0 ;允許定時(shí)器0中斷
SETB EA ;允許CPU中斷 SETB TR0 ;啟動(dòng)定時(shí)器0 SJMP $ ;等待中斷
END
采用查詢方式處理的程序: C語(yǔ)言程序:#include<reg52.h> //特殊功能寄存器庫(kù)sbit P1_0=P1^0;voidmain(){ TMOD=0x02; TL0=0x06; TH0=0x06;TR0=1;
while(1) { while(!TF0); //查詢計(jì)數(shù)溢出
TF0=0; P1_0=~P1_0; }}
匯編語(yǔ)言程序:MAIN: MOV TMOD,#02H ;主程序
MOV TL0,#06H MOV TH0,#06H SETB TR0LOOP: JNB TF0,$ ;查詢計(jì)數(shù)溢出
CLR TF0 CPL P1.0
SJMP LOOP END
門控位的應(yīng)用
門控位GATE為1時(shí),TRx=1,INTx=1才能啟動(dòng)定時(shí)器。利用這個(gè)特性可以測(cè)量外部輸入脈沖的寬度。例3利用T0門控位測(cè)試INT0引腳上出現(xiàn)的正脈沖寬度,已知晶振頻率為12MHz,將所測(cè)得值最高位存入片內(nèi)71H單元,低位存入70H單元。解:設(shè)外部脈沖由(P3.2)輸入,T0工作于定時(shí)方式1(16位計(jì)數(shù)),GATE設(shè)為1。測(cè)試時(shí),應(yīng)在INT0低電平時(shí),設(shè)置TR0為1(16位計(jì)數(shù));當(dāng)INT0變?yōu)楦唠娖綍r(shí),就啟動(dòng)計(jì)數(shù);再次變低時(shí),停止計(jì)數(shù)。此計(jì)數(shù)值與機(jī)器周期的乘積即為被測(cè)正脈沖的寬度。因fosc=12MHZ,機(jī)器周期為1us,測(cè)試過程如下。源程序如下:
MOVTMOD,#09H;設(shè)T0為方式1MOVTL0,#00H;設(shè)計(jì)初值取最大值
MOVTH0,#00HMOVR0,#70HJBP3.2,$;等P3.2(INT0)變低
SETBTR0;啟動(dòng)T0準(zhǔn)備工作
JNBP3.2,$;等待P3.2(INT0)JBP3.2,$;等待P3.2(INT0)CLRTR0;停止計(jì)數(shù)T0從0開始計(jì)數(shù)INT0
09H(TMOD)1TR0
0TR0T0停止計(jì)數(shù)
MOV@R0,TL0;存放結(jié)果
INCR0MOV@R0,TH0SJMP$
讀者不難編出C語(yǔ)言程序。這種方案被測(cè)脈沖的寬度最大為65535個(gè)機(jī)器周期
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 麻花銷售合同范例
- 特殊街道改造合同范例
- 鞋帽購(gòu)銷合同范例
- 門窗公司聘用合同范例
- 承包私人土地合同范例
- 重開購(gòu)車合同范例
- 取暖合同范例
- 手機(jī)賣場(chǎng)員工合同范例
- 第三方造價(jià)咨詢合同范例
- 房屋改造普通合同范例
- 新能源電動(dòng)汽車參考文獻(xiàn)有哪些
- 數(shù)字信號(hào)實(shí)驗(yàn)報(bào)告 IIR數(shù)字濾波器設(shè)計(jì)
- 子宮動(dòng)靜脈瘺課件
- 國(guó)土資源調(diào)查與管理
- 水庫(kù)黑臭水體綜合整治工程項(xiàng)目建議書可行性研究報(bào)告
- GRR-計(jì)數(shù)型(范例填寫)
- 【徐福記集團(tuán)企業(yè)內(nèi)部控制現(xiàn)狀及完善建議分析(11000字論文)】
- 焦度計(jì)的光學(xué)結(jié)構(gòu)原理
- GRR表格MSA第四版完整版
- 低值易耗品的驗(yàn)收
- 公司年會(huì)節(jié)目單表格模板
評(píng)論
0/150
提交評(píng)論