




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第六章AT八九S五一單片機(jī)地
定時(shí)器/計(jì)數(shù)器
1內(nèi)容概要在工業(yè)檢測與控制,許多場合要用到計(jì)數(shù)或定時(shí)功能。例如,對外部脈沖行計(jì)數(shù)或產(chǎn)生精確地定時(shí)時(shí)間等。片內(nèi)兩個(gè)可編程地定時(shí)器/計(jì)數(shù)器T一,T零,可滿足這方面地需要。本章介紹AT八九S五一單片機(jī)片內(nèi)定時(shí)器/計(jì)數(shù)器地結(jié)構(gòu)與功能,兩種工作模式與四種工作方式,以及與其有關(guān)地兩個(gè)特殊功能寄存器TMOD與TCON各位地定義及其編程,最后介紹定時(shí)器/計(jì)數(shù)器地C五一編程及應(yīng)用實(shí)例。2六.一定時(shí)器/計(jì)數(shù)器地結(jié)構(gòu)AT八九S五一地定時(shí)器/計(jì)數(shù)器結(jié)構(gòu)如圖六-一所示,T零由特殊功能寄存器TH零,TL零構(gòu)成,T一由特殊功能寄存器TH一,TL一構(gòu)成。T零與T一都具有定時(shí)器與計(jì)數(shù)器兩種工作模式,四種工作方式(方式零~三)。屬于增計(jì)數(shù)器。特殊功能寄存器TMOD用于選擇T零,T一地工作模式與工作方式。特殊功能寄存器TCON用于控制T零,T一地啟動(dòng)與停止計(jì)數(shù),同時(shí)包含了T零,T一地狀態(tài)。T零,T一不論是工作在定時(shí)器模式還是計(jì)數(shù)器模式,實(shí)質(zhì)是對脈沖信號行計(jì)數(shù),4圖六-一AT八九S五一單片機(jī)地定時(shí)器/計(jì)數(shù)器結(jié)構(gòu)框圖只不過計(jì)數(shù)信號地來源不同。計(jì)數(shù)器模式是對加在T零(P三.四)與T一(P三.五)兩個(gè)引腳上地外部脈沖行計(jì)數(shù)(見圖六-一)定時(shí)器模式是對單片機(jī)地系統(tǒng)時(shí)鐘信號經(jīng)片內(nèi)一二分頻后地內(nèi)部脈沖信號(機(jī)器周期)計(jì)數(shù)。由于時(shí)鐘頻率是定值,所以可根據(jù)對內(nèi)部脈沖信號地計(jì)數(shù)值可計(jì)算出定時(shí)時(shí)間。計(jì)數(shù)器地起始計(jì)數(shù)是從初值開始。單片機(jī)復(fù)位時(shí)計(jì)數(shù)器初值為零,也可用指令給計(jì)數(shù)器裝入一個(gè)新地初值。AT八九S五一地定時(shí)器/計(jì)數(shù)器屬于增計(jì)數(shù)器。5六.一.一工作方式控制寄存器TMODAT八九S五一定時(shí)器地工作方式寄存器TMOD用于選擇工作模式與工作方式,字節(jié)地址為八九H,不能位尋址,其格式如圖六-二所示。6圖六-二寄存器TMOD格式八位分為兩組,高四位控制T一,低四位控制T零。下面對TMOD地各位給出說明。(一)GATE—門控位。GATE=零時(shí),僅由運(yùn)行控制位TRx(x
=
零,一)來控制定時(shí)器運(yùn)行。GATE=一時(shí),用外斷引腳INT零*(或INT一*)上地電與運(yùn)行控制位TRx同控制定時(shí)器運(yùn)行。(二)M一,M零—工作方式選擇位。M一,M零地四種編碼,對應(yīng)于四種工作方式地選擇,如表六-一所示。78(三)C/T*—計(jì)數(shù)器模式與定時(shí)器模式選擇位。C/T*=零,為定時(shí)器工作模式,對單片機(jī)地晶體振蕩器一二分頻后地脈沖行計(jì)數(shù)。C/T*=一,為計(jì)數(shù)器工作模式,計(jì)數(shù)器對外部輸入引腳T零(P三.四)或T一(P三.五)地外部脈沖(負(fù)跳變)計(jì)數(shù)。六.一.二定時(shí)器/計(jì)數(shù)器控制寄存器TCONTCON字節(jié)地址為八八H,可位尋址,位地址為八八H~八FH,格式如圖六-三所示。9圖六-三TCON格式第五章介紹了與外部斷有關(guān)地低四位。這里僅介紹與定時(shí)器有關(guān)地高四位功能。(一)TF一,TF零—計(jì)數(shù)溢出標(biāo)志位。當(dāng)計(jì)數(shù)器計(jì)數(shù)溢出時(shí),該位置"一"。使用查詢方式時(shí),此位作為狀態(tài)位供CPU查詢,但應(yīng)注意查詢有效后,應(yīng)使用軟件及時(shí)將該位清"零"。使用斷方式時(shí),此位作為斷請求標(biāo)志位,入斷服務(wù)程序后由硬件自動(dòng)清"零"。(二)TR一,TR零—計(jì)數(shù)運(yùn)行控制位。TR一位(或TR零位)=一,啟動(dòng)定時(shí)器工作地必要條件。TR一位(或TR零位)=零,停止定時(shí)器工作。該位可由軟件置"一"或清"零"。10六.二定時(shí)器/計(jì)數(shù)器地四種工作方式四種工作方式分別介紹如下。六.二.一方式零當(dāng)M一,M零為零零時(shí),定時(shí)器/計(jì)數(shù)器被設(shè)置為工作方式零,這時(shí)定時(shí)器/計(jì)數(shù)器地等效邏輯結(jié)構(gòu)框圖如圖六-四所示(以定時(shí)器/計(jì)數(shù)器T一為例,TMOD.五,TMOD.四
=
零零)。11圖六-四定時(shí)器/計(jì)數(shù)器方式零邏輯結(jié)構(gòu)框圖方式零時(shí),為一三位計(jì)數(shù)器,由TLx(x
=
零,一)地低五位與THx地高八位構(gòu)成。TLx低五位溢出則向THx位,THx計(jì)數(shù)溢出則把TCON地溢出標(biāo)志位TFx置"一"。圖六-二,C/T*位控制地電子開關(guān)決定了定時(shí)器/計(jì)數(shù)器地兩種工作模式。(一)C/T*=零,電子開關(guān)打在上面位置,T一(或T零)為定時(shí)器工作模式,把時(shí)鐘振蕩器一二分頻后地脈沖作為計(jì)數(shù)信號。(二)C/T*=一,電子開關(guān)打在下面位置,T一(或T零)為計(jì)數(shù)器工作模式,計(jì)數(shù)脈沖為P三.四(或P三.五)引腳上地外部輸入脈沖,當(dāng)引腳上發(fā)生負(fù)跳變時(shí),計(jì)數(shù)器加一。13GATE位狀態(tài)決定定時(shí)器地運(yùn)行控制取決于TRx一個(gè)條件,還是取決于TRx與INTX*(x
=
零,一)引腳狀態(tài)這兩個(gè)條件。(一)GATE=零時(shí),A點(diǎn)(見圖六-四)電位恒為一,B點(diǎn)電位僅取決于TRx狀態(tài)。TRx
=
一,B點(diǎn)為高電,控制端控制電子開關(guān)閉合,允許T一(或T零)對脈沖計(jì)數(shù)。TRx
=
零,B點(diǎn)為低電,電子開關(guān)斷開,禁止T一(或T零)計(jì)數(shù)。(二)GATE=一時(shí),B點(diǎn)電位由INTX*(x
=
零,一)地輸入電與TRx地狀態(tài)兩個(gè)條件來定。當(dāng)TRx=一,且INTX*=一時(shí),B點(diǎn)才為一,控制端控制電子開關(guān)閉合,允許T一(或T零)計(jì)數(shù)。故這種情況下計(jì)數(shù)器是否計(jì)數(shù)是由TRx與INTX*兩個(gè)條件來同控制。14六.二.二方式一當(dāng)M一,M零為零一時(shí),工作于方式一,方式一地等效電路邏輯結(jié)構(gòu)如圖六-五所示。方式一與方式零地差別僅僅在于計(jì)數(shù)器地位數(shù)不同,方式一為一六位計(jì)數(shù)器,由THx高八位與TLx低八位構(gòu)成(x
=
零,一),方式零則為一三位計(jì)數(shù)器,有關(guān)控制狀態(tài)位地意義(GATE,C/T*,TFx,TRx)與方式零相同。1516圖六-五定時(shí)器/計(jì)數(shù)器方式一邏輯結(jié)構(gòu)框圖六.二.三方式二方式零與方式一地最大特點(diǎn)是計(jì)數(shù)溢出后,計(jì)數(shù)器為全零。因此在循環(huán)定時(shí)或循環(huán)計(jì)數(shù)應(yīng)用時(shí)就存在用指令反復(fù)裝入計(jì)數(shù)初值地問題。這不僅影響定時(shí)精度,也給程序設(shè)計(jì)帶來麻煩。方式二就是解決此問題而設(shè)置地。當(dāng)M一,M零為一零時(shí),定時(shí)器/計(jì)數(shù)器處于工作方式二,這時(shí)定時(shí)器/計(jì)數(shù)器地等效邏輯結(jié)構(gòu)如圖六-六所示(以定時(shí)器T一為例,x
=
一)。1718圖六-六定時(shí)器/計(jì)數(shù)器方式二邏輯結(jié)構(gòu)框圖定時(shí)器/計(jì)數(shù)器地方式二為自動(dòng)恢復(fù)初值(初值自動(dòng)裝入)地八位定時(shí)器/計(jì)數(shù)器,TLx(x
=
零,一)作為常數(shù)緩沖器,當(dāng)TLx計(jì)數(shù)溢出時(shí),在溢出標(biāo)志TFx置"一"地同時(shí),還自動(dòng)將THx地初值送至TLx,使TLx從初值開始重新計(jì)數(shù)。定時(shí)器/計(jì)數(shù)器地方式二工作過程如圖六-七所示。此工作方式可省去用戶軟件重裝初值地指令地執(zhí)行時(shí)間,簡化定時(shí)初值地計(jì)算方法,可相當(dāng)精確地確定定時(shí)時(shí)間。19六.二.四方式三方式三是為了增加一個(gè)附加地八位定時(shí)器/計(jì)數(shù)器而設(shè)置地,從而使AT八九S五一單片機(jī)具有三個(gè)定時(shí)器/計(jì)數(shù)器。方式三只適用于定時(shí)器/計(jì)數(shù)器T零,定時(shí)器/計(jì)數(shù)器T一不能工作在方式三。T一處于方式三時(shí)相當(dāng)于TR一
=
零,停止計(jì)數(shù)(此時(shí)T一可用來作為20圖六-七方式二工作過程串行口波特率產(chǎn)生器)。一.工作方式三下地T零當(dāng)TMOD地低二位為一一時(shí),T零地工作方式被選為方式三,各引腳與T零地邏輯關(guān)系如圖六-八所示。T零分為兩個(gè)獨(dú)立地八位計(jì)數(shù)器TL零與TH零,TL零使用T零地狀態(tài)控制位C/T*,GATE,TR零,而TH零被固定為一個(gè)八位定時(shí)器(不能作為外部計(jì)數(shù)模式),并使用T一地狀態(tài)控制位TR一與TF一,同時(shí)占用T一地?cái)嗾埱笤碩F一。2122圖六-八定時(shí)器/計(jì)數(shù)器T零方式三地邏輯結(jié)構(gòu)框圖(一)T一工作在方式零T一地控制字M一,M零
=
零零時(shí),T一工作在方式零,工作示意圖如圖六-九所示。23圖六-九T零工作在方式三時(shí)T一為方式零地工作示意圖(二)T一工作在方式一當(dāng)T一地控制字M一,M零
=
零一時(shí),T一工作在方式一,工作示意圖如圖六-一零所示。24圖六-一零T零工作在方式三時(shí)T一為方式一地工作示意圖(三)T一工作在方式二當(dāng)T一地控制字M一,M零
=
一零時(shí),T一地工作方式為方式二,工作示意圖如圖六-一一所示。25圖六-一一T零工作在方式三時(shí)T一為方式二地工作示意圖(四)T一設(shè)置在方式三。當(dāng)T零設(shè)置在方式三時(shí),再把T一也設(shè)置成方式三,此時(shí)T一停止計(jì)數(shù)。六.三對外部輸入地計(jì)數(shù)信號地要求當(dāng)定時(shí)器/計(jì)數(shù)器工作在計(jì)數(shù)器模式時(shí),計(jì)數(shù)脈沖來自外部輸入引腳T零或T一。當(dāng)輸入信號產(chǎn)生由一至零地跳變(即負(fù)跳變)時(shí),計(jì)數(shù)器值增一。每個(gè)機(jī)器周期地S五P二期間,都對外部輸入引腳T零或T一行采樣。如在第一個(gè)機(jī)器周期采得地值為一,而在下一個(gè)機(jī)器周期采得地值為零,則在緊跟著地再下一個(gè)機(jī)器周期S三P一期間,計(jì)數(shù)器加一。27由于確認(rèn)一次負(fù)跳變花二個(gè)機(jī)器周期,即二四個(gè)振蕩周期,因此外部輸入地計(jì)數(shù)脈沖地最高頻率為系統(tǒng)振蕩器頻率地一/二四。圖六-一二對外部計(jì)數(shù)輸入信號地要求例如,選用六MHz頻率地晶體,允許輸入地脈沖頻率最高為二五零kHz。如果選用一二MHz頻率地晶體,則可輸入最高頻率為五零零kHz地外部脈沖。對于外部輸入信號地占空比并沒有什么限制,但為了確保某一給定電在變化之前能被采樣一次,則這一電至少要保持一個(gè)機(jī)器周期。故對外部輸入信號地要求如圖六-一二所示,圖Tcy為機(jī)器周期。28六.四定時(shí)器/計(jì)數(shù)器地編程與應(yīng)用在四種工作方式,方式零與方式一基本相同,只是計(jì)數(shù)器地計(jì)數(shù)位數(shù)不同。方式零為一三位計(jì)數(shù)器,方式一為一六位計(jì)數(shù)器。由于方式零是為兼容MCS-四八而設(shè),且其計(jì)數(shù)初值計(jì)算復(fù)雜,所以在實(shí)際應(yīng)用,一般不用方式零,而采用方式一。六.四.一P一口外接地八只LED每零.五s閃亮一次。例六-一在AT八九S五一單片機(jī)地P一口上接有八只LED(電路見圖四-七)。下面采用定時(shí)器T零地方式一地定時(shí)斷方式,使P一口外接地八只LED每零.五s閃亮一次。(一)設(shè)置TMOD寄存器定時(shí)器T零工作在方式一,應(yīng)使TMOD寄存器地M一,M零=零一;應(yīng)設(shè)置C/=零,為定時(shí)器工作模式;對T零地運(yùn)行控制僅由TR零來控制,應(yīng)使GATE零=零。定時(shí)器T一不使用,各有關(guān)位均設(shè)為零。所以,TMOD寄存器應(yīng)初始化為零x零一。(二)計(jì)算T零計(jì)數(shù)初值設(shè)定時(shí)時(shí)間五ms(即五零零零μs),設(shè)定時(shí)器T零地計(jì)數(shù)初值為X,假設(shè)晶振地頻率為一一.零五九二MHz,則定時(shí)時(shí)間為:定時(shí)時(shí)間=(二一六?X)一二/晶振頻率30則五零零零=(二一六
?X)一二/一一.零五九二得:X=六零九二八,轉(zhuǎn)換成一六制后為:零xee零零,其零xee裝入TH零,零x零零裝入TL零。(三)設(shè)置IE寄存器本例由于采用定時(shí)器T零斷,因此需將IE寄存器地EA,ET零位置一。(四)啟動(dòng)與停止定時(shí)器T零將定時(shí)器控制寄存器TCON地TR零=一,則啟動(dòng)定時(shí)器T零;TR零=零,則停止定時(shí)器T零定時(shí)。參考程序如下:31#include<reg五一.h>Chari=一零零; /*給變量i賦初值*/voidmain(){TMOD=零x零一; /*設(shè)置定時(shí)器T零為方式一*/TH零=零xee; /*向TH零寫入初值地高八位*/TL零=零x零零; /*向TL零寫入初值地低八位*/P一=零x零零; /*P一口八只LED點(diǎn)亮*/EA=一; /*總斷允許*/ET零=一; /*定時(shí)器T零斷允許*/TR零=一; /*啟動(dòng)定時(shí)器T零*/while(一); /*無窮循環(huán),等待定時(shí)斷*/}32六.四.二計(jì)數(shù)器地應(yīng)用例六-二采用定時(shí)器T一地方式一地?cái)嘤?jì)數(shù)方式,如圖六-一三所示,計(jì)數(shù)輸入引腳T一(P三.五)上外接開關(guān)K一,作為計(jì)數(shù)信號輸入。按四次K一后,P一口地八只LED閃爍不停。(一)設(shè)置TMOD寄存器T一工作在方式一,應(yīng)使TMOD地M一,M零=零一;設(shè)置計(jì)數(shù)器工作模式C/T*=一;對T零地運(yùn)行控制僅由TR零來控制,應(yīng)使GATE零=零。定時(shí)器T零不使用,各有關(guān)位均設(shè)為零。所以,TMOD寄存器應(yīng)初始化為零x五零。3334圖六-一三由外部計(jì)數(shù)輸入信號控制LED地閃爍(二)計(jì)算T一計(jì)數(shù)初值由于每按四次K一,計(jì)數(shù)一次,因此計(jì)數(shù)器地初值為六五五三六-四=六五五三二,將其轉(zhuǎn)換成一六制后為:零xfffc,因此,TH零=零xff,TL零=零xfc。(三)設(shè)置IE寄存器本例由于采用定時(shí)器T一斷,因此需將IE寄存器地EA,ET一位置一。(四)啟動(dòng)與停止定時(shí)器T一將定時(shí)器控制寄存器TCON地TR一=一,則啟動(dòng)定時(shí)器T一計(jì)數(shù);TR一=零,則停止定時(shí)器T一計(jì)數(shù)。參考程序如下:35#include<reg五一.h>voidDelay(unsignedinti)/*定義延時(shí)函數(shù)Delay(),i是形式參數(shù),不能賦初值*/{unsignedintj; for(;i>零;i--)/*變量i由實(shí)際參數(shù)傳入一個(gè)值,因此i不能賦初值*/for(j=零;j<一二五;j++) {;} /*空函數(shù)*/}voidmain() /*主函數(shù)*/{TMOD=零x五零; /*設(shè)置定時(shí)器T一為方式一計(jì)數(shù)*/TH零=零xff; /*向TH零寫入初值地高八位*/36TL零=零xfc; /*向TL零寫入初值低八位*/EA=一; /*總斷允許*/ET一=一; /*T一斷允許*/TR一=一; /*啟動(dòng)T一*/while(一); /*無窮循環(huán),等待定時(shí)斷*/}/*以下為定時(shí)器T一地?cái)喾?wù)程序*/voidT一_int(void)interrupt三{for(;;) /*無限循環(huán)*/{P一=零xff; /*八位LED全滅*/Delay(五零零); /*延時(shí)五零零ms*/P一=零; /*八位LED全亮*/Delay(五零零);} /*延時(shí)五零零ms*/}37六.四.三擴(kuò)展一個(gè)外部斷源方式二可自動(dòng)重新裝載初值。此方式可省去用戶程序重新裝初值地指令。當(dāng)某個(gè)定時(shí)器/計(jì)數(shù)器不使用時(shí),可為AT八九S五一擴(kuò)展一個(gè)負(fù)跳沿觸發(fā)地外部斷源?;舅枷胧前讯〞r(shí)器溢出斷做成外部斷,然后把計(jì)數(shù)輸入信號接到定時(shí)器地相應(yīng)引腳上T零腳(或T一腳),并把定時(shí)器被設(shè)置為方式二(自動(dòng)裝入常數(shù)方式)計(jì)數(shù)工作模式,計(jì)數(shù)器TH零,TL零初值均為零FFH,并允許T零斷,總斷開放。當(dāng)檢測到T零腳(或T一腳)引腳電發(fā)生負(fù)跳變時(shí),計(jì)數(shù)器TF零(或TF一)溢出,這時(shí)將產(chǎn)生一個(gè)斷請求。38例六-三擴(kuò)展一個(gè)負(fù)跳沿觸發(fā)地外部斷源,把定時(shí)器T零計(jì)數(shù)輸入引腳作為外部斷請求信號地輸入端。#include<reg五一.h>voidmain(){………TMOD=零x零六; /*設(shè)置定時(shí)器T零為方式二計(jì)數(shù)*/TH零=零xff; /*給T零裝入初值*/TL零=零xff; /*給T零裝入初值*/ET零=一; /*允許T零斷*/EA=一; /*總斷開*/TF零=零; /*T零斷溢出標(biāo)志位清零*/TR零=一 /*接通T零計(jì)數(shù)*/while(一) /*無限循環(huán)等待*/}39/*以下為定時(shí)器T零地?cái)喾?wù)程序*/voidT零_int(void)interrupt一using零{┉┉} /*外斷處理部分*/說明:本例所述地使用定時(shí)器擴(kuò)展地外斷源只能是負(fù)跳沿觸發(fā)。此外,只有當(dāng)定時(shí)器T零(或T一)不用地話,才可使用本方法來擴(kuò)充外部斷源,此時(shí)定時(shí)器T零本身地功能將不能再使用,除非使用軟件來對它行復(fù)用控制。六.四.四P一.零上產(chǎn)生周期為二ms地方波例六-四系統(tǒng)時(shí)鐘為一二MHz,編程實(shí)現(xiàn)從P一.零引腳上輸出一個(gè)周期為二ms地方波,如圖六-一四所示4041圖六-一四定時(shí)器控制P一.零輸出一個(gè)周期為二ms地方波基本思想:要在P一.零上產(chǎn)生周期為二ms地方波,定時(shí)器應(yīng)產(chǎn)生一ms地周期地定時(shí),定時(shí)對P一.零求反。選擇定時(shí)器T零,方式一定時(shí),采用斷方式,GATE不起作用。計(jì)算T零地初值計(jì)算:設(shè)T零地初值為X,則 (二一六
?
X)
一
一零?六
=
一一零?三=
六五五三六?X
=一零零零則初值為:六五五三六?一零零零=六四五三六,因此TH零=(六五五三六
?一零零零)
/二五六,TL零=(六五五三六
?一零零零)
%二五六。參考程序如下:42#include<reg五一.h>sbitP一_零=P一^零;voidmain(void){TMOD=零x零一; /*設(shè)置定時(shí)器T零為方式二計(jì)數(shù)*/P一_零=零;TH零=(六五五三六
?一零零零)
/二五六; /*給T零裝入初值*/TL零=(六五五三六
?一零零零)
%二五六; /*給T零裝入初值*/ET零=一; /*允許T零斷*/EA=一; /*總斷開*/TR零=一 /*接通T零計(jì)數(shù)*/do{}while(一); /*無限循環(huán)等待*/}voidT零_int(void)interrupt一using一{P一_零=!P一_零;TH零=(六五五三六
?一零零零)
/二五六;TL零=(六五五三六
?一零零零)
%二五六;}43六.四.五P一.一上產(chǎn)生周期為一s地方波例六-五假設(shè)系統(tǒng)時(shí)鐘為一二MHz,編程實(shí)現(xiàn)從P一.一引腳上輸出一個(gè)周期為一s地方波?;舅枷?要在P一.零上產(chǎn)生周期為一s地方波,定時(shí)器應(yīng)產(chǎn)生五零零ms地周期定時(shí),定時(shí)到則對P一.零求反。由于定時(shí)時(shí)間較長,用定時(shí)器不能直接實(shí)現(xiàn),直接定時(shí)時(shí)間最長地就是方式一,僅為六五ms(系統(tǒng)時(shí)鐘一二MHz)多一點(diǎn)。實(shí)現(xiàn):T零定為一零ms定時(shí),每一零ms對P一.零求反一次,P一.零輸出地脈沖加到定時(shí)器T一地計(jì)數(shù)輸入腳P三.五(T一腳),作為計(jì)數(shù)輸入,定時(shí)五零零ms需計(jì)數(shù)五零次。T一設(shè)為方式二計(jì)數(shù),初值X為:二八?X=五零,則X=二零六,44所以TH一=TL一=二零六。T零設(shè)為方式一定時(shí),則控制字為六一H。定時(shí)器T零與T一均采用斷方式工作。參考程序如下:#include<reg五一.h>sbitP一_零=P一^零;sbitP一_一=P一^一;voidmain(void){TMOD=零x六一; /*設(shè)置定時(shí)器T零為方式一定時(shí),T一為方式二計(jì)數(shù)*/P一_零=零;TH零=(六五五三六
?一零零零零)
/二五六; /*給T零裝初值*/TL零=(六五五三六
?一零零零零)
%二五六;TH一=二零六; /*給T一裝初值*/TL一=二零六;45EA=一; /*總斷開*/ET零=一; /*允許T零斷*/ET一=一; /*允許T一斷*/TR零=一;TR一=一;while(一); }voidT零_int(void)interrupt一{ TH零=(六五五三六
?一零零零)
/二五六;TL零=(六五五三六
?一零零零)
%二五六;P一_零=!P一_零;}voidT一_int(void)interrupt三{P一_一=!P一_一; }; /*P一.一腳產(chǎn)生一s地方波*/。46六.四.六T一控制發(fā)出一KHz地音頻信號例六-六利用定時(shí)器T一地?cái)鄟砜刂品澍Q器發(fā)出一KHz地音頻信號,電路圖見圖六-一五。假設(shè)系統(tǒng)時(shí)鐘為一一.零五九二MHz,則每個(gè)脈沖地周期為一二/一一.零五九二=一.零八五μs。一KHz地音頻信號周期為一ms,因此要計(jì)數(shù)地脈沖數(shù)為一零零零/一.零八五=九二一次。所以T一地初值: TH一=(六五五三六
?九二一)
/二五六;TL一=(六五五三六
?九二一)
%二五六參考程序如下:4748圖六-一五控制蜂鳴器發(fā)出一KHz地音頻信號#include<reg五一.h> sbitP一_零=P一^零; sbitsound=P一^七; voidmain(void) {EA=一; /*總斷開*/ ET一=一; /*允許T零斷*/ TMOD=零x一零; /*設(shè)置定時(shí)器T一為方式一定時(shí)*/ P一_零=零; TH一=(六五五三六
?九二一)
/二五六; /*給T一裝初值*/ TL一=(六五五三六
?九二一)
%二五六; TR一=一; while(一); }49voidT一_int(void)interrupt三using零{ sound=~sound; TH一=(六五五三六
?九二一)
/二五六; TL一=(六五五三六
?九二一)
%二五六;}50六.四.七測量脈沖寬度(門控位GATEx地應(yīng)用)下面以定時(shí)器T一為例,介紹門控制位GATE地具體應(yīng)用,即測量INT零*(或INT一*)引腳上正脈沖地寬度。例六-七門控位GATE一可使T一地啟動(dòng)計(jì)數(shù)受地控制,當(dāng)GATE一=一,TR一=一時(shí),只有引腳INT一*輸入高電時(shí),T一才被允許計(jì)數(shù)。利用GATE一地這一功能,可測量引腳INT一*(P三.三)上正脈沖地寬度(機(jī)器周期數(shù)),利用門控制位GATE一,測量引腳INT一*上正脈沖地寬度。方法如圖六-一六所示。5152圖六-一六利用GATE位測量正脈沖地寬度參考程序如下:#include<reg五一.h>sbitP三_三=P三^三; /*位變量定義*/unsignedcount_high; /*定義計(jì)數(shù)變量,用來讀取TH零*/unsignedcount_low; /*定義計(jì)數(shù)變量,用來讀取TL零*/voidread_count(); /*讀計(jì)數(shù)器函數(shù)*/voidmain(){TMOD=零x九零; /*設(shè)置定時(shí)器T一為方式一定時(shí)*/TH一=零; /*向定時(shí)器T一寫入計(jì)數(shù)初值*/TL一=零;TR一=一;while(P三_三==一); /*等待變低*/53TR一=一; /*如果為低,啟動(dòng)T一(未真正開始計(jì)數(shù))*/while(P三_三==零); /*等待變高,變高后T一真正開始計(jì)數(shù)*/while(P三_三==一); /*等待變低,變低后T一停止計(jì)數(shù)*/TR一=零; read_count() /*讀計(jì)數(shù)寄存器內(nèi)容地函數(shù)*/}voidread_count() /*讀取計(jì)數(shù)寄存器地內(nèi)容*/{do{count_high=TH一; /*讀高字節(jié)*/count_low=TL一; /*讀低字節(jié)*/……… /*可將兩字節(jié)地機(jī)器周期數(shù)行顯示處理*/}while(count_high!=TH一);}執(zhí)行以上程序,使引腳上出現(xiàn)地正脈沖寬度以機(jī)器周期數(shù)地形式讀入到count_high與count_low兩個(gè)單元,如果編寫了顯示程序,可將其顯示在顯示器上。六.四.八實(shí)時(shí)時(shí)鐘地設(shè)計(jì)本節(jié)介紹如何使用定時(shí)器/計(jì)數(shù)器來實(shí)現(xiàn)實(shí)時(shí)時(shí)鐘。實(shí)時(shí)時(shí)鐘就是以秒,分,時(shí)為單位計(jì)時(shí)。一.計(jì)時(shí)地實(shí)現(xiàn)時(shí)鐘最小計(jì)時(shí)單位是秒,如何獲得一s定時(shí)?可將定時(shí)器T零地定時(shí)時(shí)間定為五零ms,采用斷方式行溢出次數(shù)地累計(jì),計(jì)滿二零次,則秒計(jì)數(shù)變量s加一;若秒計(jì)滿六零,則分計(jì)數(shù)變量m加一,同時(shí)將秒計(jì)數(shù)變量s清零;若分鐘計(jì)滿六零,則小時(shí)計(jì)數(shù)變量h加一;若小時(shí)計(jì)數(shù)變量滿二四,則將小時(shí)計(jì)數(shù)變量清零。二.程序設(shè)計(jì)先將定時(shí)器以及各計(jì)數(shù)變量,然后調(diào)用時(shí)間顯示地子程序。計(jì)時(shí)功能由定時(shí)器T零地?cái)喾?wù)子程序來實(shí)現(xiàn)。參考程序如下:#include<reg五一.h>unsignedcharin
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 汽車吊機(jī)租賃合同
- 房地產(chǎn)經(jīng)紀(jì)行業(yè)客戶信息保密合同
- 貨車運(yùn)輸合同協(xié)議書
- 戶外運(yùn)動(dòng)安全責(zé)任豁免合同
- 建筑工程大清包合同新
- 智能制造生產(chǎn)線建設(shè)合同
- 金融行業(yè)投資產(chǎn)品風(fēng)險(xiǎn)提示協(xié)議
- 保潔衛(wèi)生承包合同
- 第十二章第三節(jié)《機(jī)械效率》教學(xué)設(shè)計(jì) -2023-2024學(xué)年人教版八年級物理下冊
- 第4課 嗅覺和味覺(教學(xué)設(shè)計(jì))-2023-2024學(xué)年六年級科學(xué)下冊同步備課(青島版)
- 高中主題班會 悟哪吒精神做英雄少年-下學(xué)期開學(xué)第一課主題班會課件-高中主題班會課件
- 2025版大學(xué)食堂冷鏈?zhǔn)巢呐渌头?wù)合同模板3篇
- 2024年青島港灣職業(yè)技術(shù)學(xué)院高職單招語文歷年參考題庫含答案解析
- 廣西壯族自治區(qū)公路發(fā)展中心2025年面向社會公開招聘657名工作人員高頻重點(diǎn)提升(共500題)附帶答案詳解
- 《中國的宗教》課件
- 2025年山東魯商集團(tuán)有限公司招聘筆試參考題庫含答案解析
- 大學(xué)轉(zhuǎn)專業(yè)高等數(shù)學(xué)試卷
- 大型活動(dòng)中的風(fēng)險(xiǎn)管理與安全保障
- 公司廠區(qū)保潔培訓(xùn)
- 課題申報(bào)書:個(gè)體衰老差異視角下社區(qū)交往空間特征識別與優(yōu)化
- 2024年防盜門銷售合同范本
評論
0/150
提交評論