版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
51單片機接口定時器1計數(shù)器與定時器基礎(chǔ)1計數(shù)概念的引入2計數(shù)器的容量
3定時
4溢出5任意定時及計數(shù)的方法預(yù)置數(shù)
例:16位計數(shù)器最大的計數(shù)值到65536要計100,那我就先放進65436,再來100個脈沖,不就到了65536了嗎
251單片機的定時器51單片機有兩個定時器:T0,T132/52單片機還有一個定時器:T2T0;T1有雙重含義:引腳P3.4,P3.5??梢砸胪獠棵}沖16位定時器/計數(shù)器電路模塊,定時器數(shù)據(jù)寄存器(16位)。相關(guān)寄存器:TH0,TL0,TH1,TL1數(shù)據(jù)寄存器/定時計數(shù)器TMOD定時器模式寄存器TCON控制寄存器定時器工作原理定時器就是計數(shù)器定時器就是由若干個D觸發(fā)器構(gòu)成的計數(shù)器。計算機中多以16個D觸發(fā)器構(gòu)成,稱為16位定時器/計數(shù)器。計數(shù)器能夠記錄輸入脈沖的個數(shù)。計數(shù)器可以是加1計數(shù)方式,也可以是減1計數(shù)方式。標(biāo)準(zhǔn)脈沖(固定頻率)輸入時,稱為“定時器Timer”,通常使用本機晶振分頻得到。從引腳進入的脈沖,通常就把定時器改稱“計數(shù)器Counter”可編程計數(shù)器/定時器可以選擇多種CLK來源之一;可以設(shè)定加1或減1方式;可以寫入起始計數(shù)值;它的溢出信號可以觸發(fā)中斷或者提供其他芯片/接口使用。好的定時/計數(shù)器有“重裝載寄存器”用于存放計數(shù)初始值,當(dāng)計數(shù)器溢出時,能自動將此數(shù)裝入計數(shù)器并開始再次計數(shù)。可以開關(guān)計數(shù)器的工作。通用可編程定時/計數(shù)器框圖晶振預(yù)分頻溢出標(biāo)志數(shù)據(jù)線重裝/捕獲/比較計數(shù)器啟動開關(guān)脈沖源選擇器時鐘輸入腳輸出選擇中斷申請引腳PWM框圖解釋:重裝/比較/捕獲重裝:當(dāng)定時/計數(shù)器溢出時,能自動將“重裝載寄存器”中的數(shù)據(jù)裝入定時/計數(shù)器,繼續(xù)工作而不需軟件干預(yù)。比較:在定時/計數(shù)器數(shù)值變化過程中,當(dāng)其數(shù)值與“比較寄存器”數(shù)值相等時,通過引腳輸出電平變化,產(chǎn)生PWM波形。捕獲:通過一個引腳輸入的捕獲脈沖(下降沿)觸發(fā),將計數(shù)器值讀入捕獲寄存器并申請中斷。其作用類似“測量脈沖寬度”Intel8031的定時器有2個16位定時器(32系列有3個)。時鐘來源有兩種選擇:f/12或引腳輸入??砷_關(guān)定時器的工作。只能作加1計數(shù),計數(shù)初始值是溢出數(shù)的補碼??稍O(shè)置8位、13位、16位計數(shù)/定時;可以測量脈沖寬度。沒有重裝載寄存器(僅在方式2工作時,低8位計數(shù)溢出時使用高8位值重裝,32系列的T2有16位重裝載寄存器)。計數(shù)上溢出時可以產(chǎn)生中斷申請。有獨自的中斷入口。51定時器框圖i=0,1指:T0,T1和INT0,INT1T0,T1的模式寄存器TMODGATE 當(dāng)使用INTi測量脈寬時置1,否則置0C/T 置1時選擇Counter,時鐘由引腳輸入。 置0時選擇Timer,時鐘選用fosc/12M1M0 兩位二進制數(shù)表示選擇定時器模式為 模式0~3高4位管理定時器T1,低4位管理定時器T0GATEC/TM1M0GATEC/TM1MOMSBLSB定時器T0模式定時器T1模式定時器T0,T1的模式M1M0模式解釋00013位,TLi的低5位和THi的8位組合01116位定時/計數(shù)器,最常用1028位自動重裝載定時/計數(shù),THi是重裝載寄存器。T1常用作“波特率”發(fā)生器113T0分成兩個8位定時/計數(shù)器,借用T1的控制位(參看TCON)控制TH0,T1只能工作于模式2或者停止工作。
方式2當(dāng)MIM0為10時,選定方式2,方式2為TLx自動恢復(fù)初值(初始時間常數(shù)自動重新裝入)的8位定時器/計數(shù)器方式。把TLx作為8位計數(shù)器,THx作為常數(shù)緩沖器,當(dāng)TLx計數(shù)滿溢出時,使溢出標(biāo)志TFx置1,同時將THx中的8位數(shù)據(jù)常數(shù)重新裝入TLx中.使TLx從初值開始重新計數(shù)。方式2常用于定時控制。例如希望每隔500uS產(chǎn)生一個定時控制脈沖,若采用6M的振蕩器,使TL1=06H,TH1=06H,c/f=0就能實現(xiàn),方式2還用作串行口波特率發(fā)生器。
方式3方式3只適用于T0,當(dāng)T0工作在方式3時,TL0和TH0成為兩個獨立的8位計數(shù)器。使MCS51具有三個定時器/計數(shù)器(增加了一個附加的8位定時器/計數(shù)器)。TL0的操作與方式0和方式1類似。而TH0只能作8恢定時器用(不能用作計數(shù)器方式),并占用了T1的中斷資源TR1和TH1。在這種情況下,T1可以設(shè)置為方式0一2,用于任何不需要中斷控制的場合,或用作串行口的波特率發(fā)生器。通常.當(dāng)T1用作串行口波特率發(fā)生器時,T0才定義為方式3,以增加一個8位計數(shù)器。計數(shù)器在不同模式時結(jié)構(gòu)不同模式0,模式1的結(jié)構(gòu)框圖模式0時:低位5位,高位8位,共13位模式1時:低位8位,高位8位,共16位低位TFi中斷申請高位F0/12+引腳Ti中斷引腳INTiGATETRiC/T=0C/T=1計數(shù)器模式2時結(jié)構(gòu)模式2時:低位作8位計數(shù)器,高位作重裝載寄存器(看紅色框圖)低位TFi中斷申請高位F0/12+引腳Ti中斷引腳INTiGATETRiC/T=0C/T=1定時器T0的模式3結(jié)構(gòu)模式3時:T0高8位也做計數(shù)器,但要借用T1的控制位TR1和標(biāo)志位TF1以及中斷資源。此時的T1只能工作于模式2或者休息。TL0TF0中斷申請TH0TF1中斷申請TR1F0/12+引腳T0中斷引腳INT0GATETR0C/T=0C/T=1T0,T1的控制寄存器TCONTR0,TR1 定時器啟動控制,置1時接通時鐘(啟動)TF0,TF1 定時器溢出標(biāo)志,中斷返回指令RETI能將此標(biāo)志清0。查詢方式時,需要用軟件清零。TF1TR1TF0TR0IE1IT1IE0IT0MSBLSB外部中斷INT0和INT1控制位定時器/計數(shù)器的應(yīng)用要點使用定時器/計數(shù)器時,應(yīng)首先對它進行初始化編程,主要對TMOD和TCON進行編程,并計算和裝載 T/C的初值。通常分以下幾個步驟:1.
初始化程序設(shè)計,主要是確定T/C的工作方式,即編程TMOD;2.
計算T/C中的計數(shù)初值,并裝載到THx和TLx;3利用TCON啟動T/C,(開中斷)4.
編寫查詢服務(wù)(中斷服務(wù))程序。編程TMOD根據(jù):定時/計數(shù);是否測量外部信號寬度,定時器模式確定計算C/T中的計數(shù)初值1計算鐘周期2計算定時常數(shù)(計數(shù)值)3計算預(yù)置值4確定TH,TL計算鐘周期鐘周期一般考慮晶振頻率(暫不考慮引腳輸入的時鐘)。晶振6M時,鐘周期=2uS;晶振12M時,鐘周期=1uS;晶振24M時,鐘周期=0.5uS。計算定時常數(shù)(計數(shù)值)定時計數(shù)值(脈沖個數(shù))代表了定時量,主要參考是時鐘周期:定時量(uS)=定時計數(shù)值×?xí)r鐘周期(uS)計算預(yù)置值51單片機定時器是“加1”計數(shù),定時量必須從“溢出”值倒推。我們稱“溢出值”為“?!?位時,模=256256=FFH+1=溢出+00=0013位時,模=819216位時,模=65536定時器預(yù)置值=模-定時常數(shù)(計數(shù)值)定時器的預(yù)置值的確定的具體方法如下:在定時方式下,定時器是對機器周期脈沖計數(shù)的,若時鐘頻率采用6MHz,則一個機器周期位,機器周期=12/晶振頻率=12/(6×106)=2μs,在各個工作方式下:方式0:13位定時器的最大時間間隔=213×2μs=16.384ms方式1:16位定時器的最大時間間隔=216×2μs=131.072ms方式2:8位定時器的最大時間間隔=28×2μs=512μs定時模式,模式0的預(yù)置值計算假設(shè)定時器工作在方式0,要求定時1ms,求計數(shù)初值。設(shè)計數(shù)預(yù)置值為x,則:(213-x)×2×10-6=1×10-3x=213–500=7692因此THx=0xF0H,TLx=0x0CH.定時模式,模式1的預(yù)置值計算模式1時,計數(shù)到達65536時產(chǎn)生溢出,因此以此數(shù)減去定時數(shù)作為定時器初始值。例如:晶振12M,T0模式1,定時10mS則:定時量=10000us,定時數(shù)=10000uS/1uS=10000定時器初始值=65536-10000=55536最后,還要將定時初始值分為高8位和低8位,分別送入THi和TLi中。方法:可以用計算器將其直接轉(zhuǎn)換成16進制數(shù),也可以將此數(shù)除以256,商為高8位,余數(shù)為低8位。55536=0D8F0HMOVTH0,#0D8HMOVTL0,#0F0H方式2:8位定計數(shù)器的最大計數(shù)值=28=256假設(shè)計數(shù)器工作在計數(shù)器方式2,要求計數(shù)100個脈沖的計數(shù)初值的計算如下。設(shè)計數(shù)初始值位x,則:28-x=100x=156因此THx=TLx=0x9CH。以下就定時器的工作方式0舉例說明定時器的應(yīng)用方法定時模式,模式2的預(yù)置值計算在計數(shù)方式下,T/C是對外部輸入脈沖計數(shù)的,在各個工作方式下:方式0:13位計數(shù)器的最大計數(shù)值=213=8192方式1:16位計數(shù)器的最大計數(shù)值=216=65536方式2:8位計數(shù)器的最大計數(shù)值=28=256確定TH,TL根據(jù)工作模式確定方式0:TH高8位,TL低5位方式1:TH高8位,TL低8位方式2:TH=TL=8位
例1.假設(shè)時鐘頻率采用6MHz,要在P1.0上輸出一個周期為2ms的方波,方波的周期用定時器T0中設(shè)置一個時間常數(shù),使其每隔1ms產(chǎn)生一次中斷,CPU響應(yīng)中斷后,在中斷服務(wù)程序中對P1.0取非。T0中斷入口地址為000BH。為此要做如下幾步工作:1.設(shè)計初始化程序初始化程序包括:定時器初始化和中斷系統(tǒng)初始化,主要是對IP(中斷優(yōu)先級寄存器)、IE(中斷允許寄存器)、TCON(控制寄存器)、TMOD(工作方式寄存器)的相應(yīng)位進行正確的設(shè)置,并將時間常數(shù)送入定時器中。在本例中,假設(shè)程序是從系統(tǒng)復(fù)位開始運行的,TMOD、TCON均為00H,因此不必對TMOD操作。2.確定定時器初值
機器周期=12/晶振頻率=12/(6×10-6)=2μs設(shè):需要初值為X,則(213-X)×2×10-6=1×10-3
(213-X)=500,得:X=7692
化為2進制X=。
根據(jù)13位定時器特性,初值應(yīng)為:TH0=0F0H,TL0=0CH。
3.設(shè)計中斷服務(wù)程序和主程序
中斷服務(wù)程序除了完成要求的產(chǎn)生方波這一工作之外,還要注意將時間常數(shù)重新送入定時器中,為下一次產(chǎn)生中斷做準(zhǔn)備。主程序可以完成任何其他工作,一般情況下常常是鍵盤程序和顯示程序。在本例中,由于沒有這方面的要求,用一條轉(zhuǎn)至自身的短跳轉(zhuǎn)指令來代替主程序。
按上面設(shè)計的程序清單如下:程序清單ORG0000HRESET:AJMPMAIN;轉(zhuǎn)移到主程序入口地址ORG000BH;中斷處理程序
AJMPIT0PORG0100H;主程序MAIN:MOVSP,#60HACALLPT0M0HERE:AJMPHERE
PT0M0:MOVTL0,#0CH;T0置初值低位
MOVTH0,#0F0H;T0初值高位
SETBTR0;啟動T0SETBET0;允許T0中斷
SETBEA;CPU開放中斷
RET;中斷服務(wù)程序IT0P:MOVTL0,#0CH;T0置初值低位
MOVTH0,#0F0H;T0初值高位
CPLP1.0;P1.0取反
RETI例2編制一段程序,使P1.0端口線上輸出周期為2ms的方波脈沖。設(shè)單片機晶振頻率Fosc=6MHZ。方法:利用定時器T0作1ms定時,達到定時值后引起中斷,在中斷服務(wù)程序中,使P1.0的狀態(tài)取一次反,并再次定時1ms。計算定時初值:機器周期MC=12/fosc=2us。所以定時lms所需的機器周期個數(shù)為500D,亦即0lF4H。設(shè)T0為工作方式1(16位方式),則定時初值是(01F4H)求補=FEOCH
ORG0000HRESET:AJMPMAIN ;主程序
ORG000BHAJMPIST0 ;轉(zhuǎn)入T0中斷服務(wù)程序入口地址IST0;初始化程序段MAIN:MOVTMOD,
#01H ;T0為定時器狀態(tài),工作方式1MOVTL0,#0CH ;T0的低位定時初值MOVTH0,#0FEH ;T0的高位定時初值MOVTCON,#10H ;打開T0SETBEA ;EA=1,即允許全局中斷SETBET0 ;1ET0=1,即允許T0中斷AJMP$ ;動態(tài)暫存
IST0:MOVTL0,#0CH ;重置定時器初值MOVTH0,#0FEH ;重置定時器初值CPLP1.0 ;P1.0取反RETI ;中斷返回2模式0舉例6M晶振,用T1的方式0產(chǎn)生250uS定時,并在P1.0輸出周期為500uS的方波。定時常數(shù)計算:鐘周期=
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 內(nèi)蒙古烏拉特前旗第四中學(xué)2025屆中考聯(lián)考生物試題含解析
- 北京市密云區(qū)達標(biāo)名校2025屆中考生物仿真試卷含解析
- 2025屆遼寧省沈陽市名校中考二模生物試題含解析
- 海南省瓊中縣2025屆中考生物考試模擬沖刺卷含解析
- 2025幼兒園疫情防控開學(xué)計劃方案例文
- 建筑機械租賃合同
- 工程資料承包合同范本
- 數(shù)據(jù)保密協(xié)議書范本
- 航運運輸合同
- 2025年新小學(xué)四年級工作計劃例文
- 八年級上冊 第三單元 11《簡愛》公開課一等獎創(chuàng)新教學(xué)設(shè)計
- 真實世界研究指南 2018
- 2024年燃?xì)廨啓C值班員技能鑒定理論知識考試題庫-上(單選題)
- 中小商業(yè)銀行數(shù)字化轉(zhuǎn)型現(xiàn)狀及對策研究
- 2024-2030年中國車載冰箱行業(yè)市場發(fā)展調(diào)研及投資戰(zhàn)略分析報告
- 親子非暴力溝通培訓(xùn)講座
- 保險投訴處理流程培訓(xùn)
- (正式版)SHT 3046-2024 石油化工立式圓筒形鋼制焊接儲罐設(shè)計規(guī)范
- JJG 707-2014扭矩扳子行業(yè)標(biāo)準(zhǔn)
- 2024-2029年中國電力工程監(jiān)理行業(yè)市場現(xiàn)狀分析及競爭格局與投資發(fā)展研究報告
- 漂流項目規(guī)劃設(shè)計方案
評論
0/150
提交評論