基于C語(yǔ)言的MCS-51單片機(jī)教程 課件 2任務(wù)4:定時(shí)計(jì)數(shù)器的使用_第1頁(yè)
基于C語(yǔ)言的MCS-51單片機(jī)教程 課件 2任務(wù)4:定時(shí)計(jì)數(shù)器的使用_第2頁(yè)
基于C語(yǔ)言的MCS-51單片機(jī)教程 課件 2任務(wù)4:定時(shí)計(jì)數(shù)器的使用_第3頁(yè)
基于C語(yǔ)言的MCS-51單片機(jī)教程 課件 2任務(wù)4:定時(shí)計(jì)數(shù)器的使用_第4頁(yè)
基于C語(yǔ)言的MCS-51單片機(jī)教程 課件 2任務(wù)4:定時(shí)計(jì)數(shù)器的使用_第5頁(yè)
已閱讀5頁(yè),還剩32頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

任務(wù)4:定時(shí)計(jì)數(shù)器的使用軟件延時(shí)法:利用指令(延時(shí)子程序)運(yùn)行所消耗的時(shí)間實(shí)現(xiàn)所需的定時(shí)時(shí)間。特點(diǎn):由CPU控制,占用CPU的資源;硬件法:利用一個(gè)硬件電路實(shí)現(xiàn)所需的時(shí)間定時(shí),一旦時(shí)間到便產(chǎn)生一個(gè)標(biāo)志信號(hào)通知CPU。特點(diǎn):由CPU控制定時(shí)的啟動(dòng),但定時(shí)過(guò)程由專(zhuān)用模塊實(shí)現(xiàn),CPU不參與其過(guò)程。所以提高了CPU的工作效率。定時(shí)器就是專(zhuān)用于產(chǎn)生延時(shí)和計(jì)數(shù)的外圍模塊,是單片機(jī)內(nèi)部重要的組成部分。一、定時(shí)的兩種方式

定時(shí):用于產(chǎn)生一個(gè)標(biāo)準(zhǔn)的時(shí)間間隔。單片機(jī)使用這種方式可以產(chǎn)生一個(gè)符合某一要求的脈沖方波(如下圖)。而定時(shí)/計(jì)數(shù)器是對(duì)89C51晶振信號(hào)12分頻后的脈沖計(jì)數(shù),即每個(gè)機(jī)器周期使定時(shí)器(T0或T1)的數(shù)值加1直至溢出。當(dāng)89C51單片機(jī)晶振頻率為12MHz時(shí),一個(gè)機(jī)器周期為1uS,計(jì)數(shù)頻率為1MHz,計(jì)數(shù)器計(jì)數(shù)1次所用時(shí)間為1uS,計(jì)數(shù)器計(jì)數(shù)N個(gè),則所用時(shí)間為N*1uS。

20mS40mSMCS-51Px.y

輸出波形

計(jì)數(shù):通過(guò)引腳T0(P3.4)和T1(P3.5)對(duì)外部脈沖信號(hào)計(jì)數(shù)。當(dāng)輸入脈沖信號(hào)產(chǎn)生由1至0的下降沿時(shí),定時(shí)器加1計(jì)數(shù)。

外部脈沖外部設(shè)備說(shuō)明:不管是定時(shí)還是計(jì)數(shù)方式,定時(shí)/計(jì)數(shù)器實(shí)質(zhì)都是對(duì)脈沖計(jì)數(shù),當(dāng)對(duì)外部信號(hào)計(jì)數(shù)就是計(jì)數(shù)功能,對(duì)內(nèi)部晶振信號(hào)12分頻計(jì)數(shù)就是定時(shí)功能。每個(gè)定時(shí)/計(jì)數(shù)器都不占用CPU時(shí)間,除非計(jì)數(shù)器溢出,才可以中斷CPU當(dāng)前操作。

二、定時(shí)器的相關(guān)寄存器GATE門(mén)控位:GATE=0時(shí),只要軟件設(shè)置TR=1,就可以啟動(dòng)計(jì)數(shù)器工作;

GATE=1時(shí),只有外部中斷引腳INT=TR=“1”時(shí),才能啟動(dòng)計(jì)數(shù)器工作C/T計(jì)數(shù)/定時(shí)方式選擇位:C/T=1時(shí),計(jì)數(shù)模式。

C/T=0時(shí):定時(shí)模式。M1、M0工作方式設(shè)置位。GATEC/TM1M0GATEC/TM1M0定時(shí)器1定時(shí)器01.工作方式寄存器TMOD(SFR的地址:89H)M1M0工作方式說(shuō)明00013位定時(shí)/計(jì)數(shù)器01116位定時(shí)/計(jì)數(shù)器1028位自動(dòng)重裝定時(shí)/計(jì)數(shù)器113T0分成兩個(gè)獨(dú)立的8位定時(shí)/計(jì)數(shù)器;T1停止計(jì)數(shù)注意!不可以位尋址TF0:T0的溢出中斷請(qǐng)求標(biāo)志:硬件自動(dòng)置1或清0

計(jì)數(shù)器溢出時(shí)硬件自動(dòng)置位,即TF0=1。進(jìn)入中斷后再由硬件自動(dòng)清除(TF0=0);TR0:T0的運(yùn)行控制位:軟件置1或清0

由軟件設(shè)定:TR0=1

T0開(kāi)始工作;

TR0=0

T0停止計(jì)數(shù)。TF1、TR1同上。TF1TR1TF0TR0IE1IT1IE0IT02、控制寄存器TCON(SFR地址:88H)可以位尋址定時(shí)/計(jì)數(shù)器相關(guān)位外部中斷相關(guān)位3、初值寄存器TH和TLTH1和TL1:T1的高八位和低八位寄存器。TH0和TL0:T0的高八位和低八位寄存器。在MCS-51單片機(jī)內(nèi)部,具有兩個(gè)完全相同的定時(shí)計(jì)數(shù)器T0、T1。它們都具有兩種工作模式:定時(shí)和計(jì)數(shù);無(wú)論是定時(shí)或計(jì)數(shù)模式,又都有具備四種工作方式,根據(jù)實(shí)際要求達(dá)到最佳的工作狀態(tài)。定時(shí)計(jì)數(shù)器的工作方式、工作模式是由SFR中的TMOD內(nèi)容來(lái)決定的。因此對(duì)其方式、模式的設(shè)定是靠對(duì)TMOD的初始化編程實(shí)現(xiàn)的。三、51單片機(jī)定時(shí)器/計(jì)數(shù)器的四種工作方式1,方式0:13位定時(shí)器/計(jì)數(shù)器THTL震蕩器1/12(8位)(低5位)TF中斷啟動(dòng)控制T引腳TRGATEINT高三位棄用C/T=0C/T=113位加1計(jì)數(shù)器在某一個(gè)初值的基礎(chǔ)上加1計(jì)數(shù),當(dāng)計(jì)數(shù)器計(jì)滿(mǎn)為全“1”,再來(lái)一個(gè)計(jì)數(shù)脈沖時(shí),就產(chǎn)生一個(gè)“溢出中斷信號(hào)”TF=1,向CPU發(fā)出中斷請(qǐng)求。由于低8位計(jì)數(shù)器中的高三位沒(méi)有參與工作,故填裝初值時(shí)應(yīng)“避開(kāi)”此三位。類(lèi)同于模式0。由于兩個(gè)計(jì)數(shù)器為完整的8位,故將計(jì)算好的16位初值可直接填裝到TH、TL中。在某一個(gè)初值的基礎(chǔ)上加1計(jì)數(shù),當(dāng)計(jì)數(shù)器計(jì)滿(mǎn)為全“1”,再來(lái)一個(gè)計(jì)數(shù)脈沖時(shí),就產(chǎn)生一個(gè)“溢出中斷信號(hào)”TF=1,向CPU發(fā)出中斷請(qǐng)求。TLTH震蕩器1/12(8位)(8位)TF中斷啟動(dòng)控制T引腳TRGATEINTC/T=0C/T=12,方式1:16位定時(shí)器/計(jì)數(shù)器16位加1計(jì)數(shù)器方式0、1的特點(diǎn)13位和16位的計(jì)數(shù)器方式。啟動(dòng)后,從某一個(gè)初值的基礎(chǔ)上進(jìn)行“加1”計(jì)數(shù)。當(dāng)計(jì)到“全1”時(shí)再來(lái)一個(gè)計(jì)數(shù)脈沖,計(jì)數(shù)器就會(huì)產(chǎn)生一個(gè)“溢出中斷信號(hào)”即TF=1,此時(shí)計(jì)數(shù)器本身為“全零”。如果需要重復(fù)性的完成某一值的定時(shí)或計(jì)數(shù),需要在每一次計(jì)數(shù)前不斷的重新預(yù)裝初值,稱(chēng)之為“軟件重裝初值”。TL做計(jì)數(shù)器,TH做初值寄存器,工作前TL,TH分別預(yù)置相同的初值。TL計(jì)數(shù)產(chǎn)生溢出的同時(shí),將TH中的初值自動(dòng)重裝TL。TL繼續(xù)計(jì)數(shù)。TL(8位)TH(8位)震蕩器1/12TF中斷控制T引腳TRGATEINTC/T=1C/T=03,方式2

:8位自動(dòng)重裝定時(shí)器/計(jì)數(shù)器8位加1計(jì)數(shù)器8位初值寄存器方式2的特點(diǎn)及應(yīng)用8位計(jì)數(shù)器的方式,定時(shí)或計(jì)數(shù)的范圍遠(yuǎn)遠(yuǎn)小于方式0和方式1;具備初值“硬件自動(dòng)重裝”功能,非常適合進(jìn)行重復(fù)性定時(shí)的場(chǎng)合,如產(chǎn)生連續(xù)方波信號(hào)等。編成中省去了軟件重裝初值的麻煩;在MCS-51單片機(jī)中,T1設(shè)定成此模式用于做串行口波特率發(fā)生器。將T0和T1重新進(jìn)行“拆分、組合”。將T0變?yōu)門(mén)H0,TL0組成的兩個(gè)獨(dú)立的8位定時(shí)/計(jì)數(shù)器。TH0+TF1+TR1組成8位定時(shí)/計(jì)數(shù)器;TL0+TF0+TR0組成8位定時(shí)/計(jì)數(shù)器;TL0震蕩器1/12TF0中斷控制T0引腳TR0GATEINT0C/T=0C/T=1TH0TF1中斷控制TR1Fosc/124,方式3

組合擴(kuò)展模式(僅適用于T0)在方式3時(shí)T0,T1的電路結(jié)構(gòu)圖TL0八位定時(shí)/計(jì)數(shù)器TH0八位定時(shí)器TL1TF0TF1將T0分解為兩個(gè)計(jì)數(shù)器TL0:8位定時(shí)/計(jì)數(shù)器;TH0:8位定時(shí)器(借用TR1和TF1)T1(模式2)做波特率發(fā)生器。TH1定時(shí)/計(jì)數(shù)器4種方式比較(計(jì)數(shù)最大值)模式計(jì)數(shù)模M最大計(jì)數(shù)值模式013位Tmax=213=8192模式116位Tmax=216=

65536模式2,38位Tmax=28=256定時(shí)/計(jì)數(shù)器4種方式比較(定時(shí)最大時(shí)間)模式計(jì)數(shù)模M最大定時(shí)時(shí)間Tmax(fosc=12M)模式013位Tmax=8192*1μ?

=8.192ms模式116位Tmax=65536*1μ?=65.536ms模式2,38位Tmax=256*1μ?=0.256msM---計(jì)數(shù)器的模 模式0:M=213 =8192

模式1:M=216 =65536

模式2、3:M=28=256T=(M-TC)×t

其中,T:定時(shí)時(shí)間,M:計(jì)數(shù)器的模,TC:計(jì)數(shù)初值,t:計(jì)數(shù)器計(jì)數(shù)脈沖的周期(t=12/fosc)。四、51單片機(jī)初值的計(jì)算TC計(jì)算舉例定時(shí)方式:要求T0產(chǎn)生50mS的定時(shí)?!窘?】選擇模式1。

TC=65536?(50mS*1000)/1μS =65536?50000 =15536=3CB0H【思考題】為什么選擇模式1?【思考題】TC有沒(méi)有更簡(jiǎn)潔的表示方式?

TH=(65536-50000)/256;TL==(65536-50000)%256;TH=(-50000)/256;TL==(-50000)%256;(1)設(shè)置定時(shí)/計(jì)數(shù)器的工作方式通過(guò)對(duì)方式寄存器TMOD的設(shè)置,確定相應(yīng)的定時(shí)/計(jì)數(shù)器是定時(shí)功能還是計(jì)數(shù)功能,以及工作方式及啟動(dòng)方法。(2)設(shè)置定時(shí)/計(jì)數(shù)器的初始值,即設(shè)置THx和TLx的值。

定時(shí)/計(jì)數(shù)器允許用戶(hù)編程設(shè)定開(kāi)始計(jì)數(shù)的數(shù)值,稱(chēng)為賦初值。初值不同,則計(jì)數(shù)器產(chǎn)生溢出時(shí),計(jì)數(shù)個(gè)數(shù)也不同。五、定時(shí)/計(jì)數(shù)器的應(yīng)用步驟(3)啟動(dòng)定時(shí)/計(jì)數(shù)器當(dāng)設(shè)置了定時(shí)器的工作方式并啟動(dòng)定時(shí)器工作后,定時(shí)器就按被設(shè)定的工作方式獨(dú)立工作,不再占用CPU的操作時(shí)間,只有在計(jì)數(shù)器計(jì)數(shù)溢出時(shí)才能中斷CPU當(dāng)前的操作。

(4)計(jì)數(shù)溢出計(jì)數(shù)溢出標(biāo)志位在控制寄存器TCON中,用于通知用戶(hù)定時(shí)/計(jì)數(shù)器已經(jīng)計(jì)滿(mǎn),用戶(hù)可以采用查詢(xún)方式或中斷方式進(jìn)行操作。中斷方式查詢(xún)方式定時(shí)/計(jì)數(shù)器的編程六、51單片機(jī)定時(shí)器編程與控制(1)中斷方式——編程步驟設(shè)置中斷優(yōu)先級(jí),當(dāng)中斷只有一個(gè)時(shí)不用設(shè)置設(shè)置TMOD初始化設(shè)置定時(shí)/計(jì)數(shù)初值啟動(dòng)定時(shí)/計(jì)數(shù)器編寫(xiě)定時(shí)/計(jì)數(shù)器中斷的處理服務(wù)程序124563編程步驟開(kāi)中斷(2)查詢(xún)方式——編程步驟設(shè)置TMOD初始化設(shè)置定時(shí)/計(jì)數(shù)初值啟動(dòng)定時(shí)/計(jì)數(shù)器查詢(xún)溢出標(biāo)志位TF0或TF1置位情況及相關(guān)處理1

2

4

5

3

開(kāi)中斷編程步驟任務(wù):利用單片機(jī)定時(shí)/計(jì)數(shù)器實(shí)現(xiàn)1位簡(jiǎn)易秒表的設(shè)計(jì),顯示時(shí)間0到9秒。

舉例任務(wù)分析任務(wù)的關(guān)鍵是定時(shí),可以利用單片機(jī)內(nèi)部定時(shí)/計(jì)數(shù)器完成。當(dāng)單片機(jī)晶體振蕩頻率為12MHz,則定時(shí)計(jì)數(shù)器的定時(shí)基準(zhǔn)為計(jì)數(shù)1次時(shí)間為1us,單片機(jī)定時(shí)計(jì)數(shù)器有4種工作模式,可以構(gòu)成8位、13位和16位計(jì)數(shù)器;不同位數(shù)的計(jì)數(shù)器其最大定時(shí)時(shí)間不同,可以采用不同的定時(shí)方案。1)8位計(jì)數(shù)器當(dāng)構(gòu)成8位計(jì)數(shù)器時(shí),其最大計(jì)數(shù)值為256,即最大定時(shí)時(shí)間為256us;可以利用定時(shí)計(jì)數(shù)器定時(shí)0.250ms,循環(huán)定時(shí)4000次,實(shí)現(xiàn)1S的定時(shí);2)13位計(jì)數(shù)器當(dāng)構(gòu)成13位計(jì)數(shù)器時(shí),其最大計(jì)數(shù)值為8192,即最大定時(shí)時(shí)間為8.192ms,可以利用定時(shí)計(jì)數(shù)器1次定時(shí)5ms,循環(huán)定時(shí)200次,實(shí)現(xiàn)1S的定時(shí);3)16位計(jì)數(shù)器當(dāng)構(gòu)成16位計(jì)數(shù)器時(shí),其最大計(jì)數(shù)值為65536,即最大定時(shí)時(shí)間為65.536ms,可以利用定時(shí)計(jì)數(shù)器1次定時(shí)50ms,循環(huán)定時(shí)20次,實(shí)現(xiàn)1S的定時(shí);設(shè)計(jì)方案采用16位計(jì)數(shù)器實(shí)現(xiàn)定時(shí)50ms,循環(huán)反復(fù)20次,達(dá)到1S定時(shí)。顯示采用1位七段數(shù)碼管。硬件電路仿真圖

軟件程序單片機(jī)定時(shí)計(jì)數(shù)器溢出有中斷和查詢(xún)兩種處理方式;查詢(xún)方式是CPU啟動(dòng)定時(shí)計(jì)數(shù)器工作后,馬上讀取定時(shí)計(jì)數(shù)器溢出標(biāo)志位TF0(TF1),判斷是否為1,為1表示計(jì)數(shù)器溢出,1次定時(shí)時(shí)間到;如果為0,表示定時(shí)時(shí)間沒(méi)到,CPU繼續(xù)讀取并判斷,重復(fù)這個(gè)過(guò)程。中斷方式是在定時(shí)計(jì)數(shù)器溢出后,利用定時(shí)/計(jì)數(shù)器中斷系統(tǒng)向CPU提請(qǐng)中斷請(qǐng)求,CPU轉(zhuǎn)去處理相應(yīng)的中斷服務(wù)程序,如果定時(shí)計(jì)數(shù)器沒(méi)有溢出,則CPU執(zhí)行主程序。采用查詢(xún)方式,定時(shí)計(jì)數(shù)器在定時(shí)計(jì)數(shù)時(shí),CPU在查詢(xún)中斷溢出標(biāo)志位,CPU不能處理其他事件,占用了CPU的時(shí)間;而中斷方式,定時(shí)計(jì)數(shù)器在定時(shí)計(jì)數(shù)時(shí),CPU執(zhí)行主程序,只有計(jì)數(shù)溢出后,CPU才停止其他程序的執(zhí)行,轉(zhuǎn)去處理定時(shí)計(jì)數(shù)器溢出中斷服務(wù)程序,不占用CPU資源。1)查詢(xún)方式程序設(shè)計(jì)參考程序:/*1位秒表,數(shù)碼管顯示,定時(shí)溢出采用查詢(xún)方式*/#include<reg51.h>voiddelay1s(){unsignedchari;TMOD=0x01;//置T0為模式1,16位計(jì)數(shù)器

for(i=0;i<20;i++)//20次循環(huán)定時(shí),每次循環(huán)定時(shí)時(shí)間為50ms{ TH0=(65536-50000)/256;//定時(shí)器50mSTH0的初始值

TL0=(65536-50000)%256;//定時(shí)器50mSTL0的初始值

TR0=1; //啟動(dòng)T0 while(!TF0);//查詢(xún)計(jì)數(shù)器是否溢出(TF0=1),即定時(shí)50ms時(shí)間到

TF0=0; //50ms定時(shí)時(shí)間到,將定時(shí)器溢出標(biāo)志位TF0清零

}}參考程序:voidmain(){ unsignedcharS;//定義變量S,暫存秒的數(shù)值

TMOD=0X01;//定時(shí)器初始化

TH0=(65536-50000)/256;計(jì)數(shù)器初始值

TL0=(65536-50000)%256; S=0;//秒數(shù)值初始為0 TR0=1;//啟動(dòng)計(jì)時(shí)

while(1) { P0=S;//顯示秒時(shí)間

delay1s();//調(diào)用1秒延時(shí)函數(shù)

S++;//秒變量加1

if(S==10)S=0;//判斷10S時(shí)間是否到,到了秒變量清零。

}}2)中斷方式程序設(shè)計(jì)參考程序:/*1位秒表,數(shù)碼

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論