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

下載本文檔

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

文檔簡介

1、第第6 6章章 單片機的定時器單片機的定時器/ /計數(shù)器計數(shù)器 本章的內(nèi)容本章的內(nèi)容 定時定時/ /實現(xiàn)方式:實現(xiàn)方式: 1.1.軟件定時;軟件定時; 2.2.不可編程硬件定時;不可編程硬件定時; 3.3.可編程定時可編程定時 。多重循環(huán)多重循環(huán)定時芯片定時芯片555定時定時/計數(shù)器計數(shù)器圖6-1 80C51定時器/計數(shù)器邏輯結(jié)構圖6.1.1 6.1.1 定時定時/ /計數(shù)器的結(jié)構計數(shù)器的結(jié)構 用一個簡單的框圖構造它的模型用一個簡單的框圖構造它的模型 :N N位計數(shù)器構位計數(shù)器構成了電路的核心。定時成了電路的核心。定時, ,計數(shù)兩種方式的區(qū)別在于計計數(shù)兩種方式的區(qū)別在于計數(shù)器的脈沖來源數(shù)器的脈

2、沖來源. .初值寄存器是用來設定初值寄存器是用來設定“定時定時/ /計數(shù)計數(shù)的具體參數(shù)的具體參數(shù)” (1):何時控制啟動計數(shù)?(2):如何控制定時還是計數(shù)?(3):如何控制定時/計數(shù)的長短?N位+1計數(shù)器TFxN位初值寄存器系統(tǒng)內(nèi)部時鐘fosc/12啟動控制TR外部脈沖定時/計數(shù)控制C/T計數(shù)器溢出中斷信號返回計數(shù)脈沖CP6.1.2 6.1.2 定時定時/ /計數(shù)器的工作原理計數(shù)器的工作原理1)每過一個每過一個機器周期機器周期,計數(shù)器增,計數(shù)器增1 1,直至計滿溢出,直至計滿溢出( (1212分頻分頻) )2 2)定時器的定時時間與系統(tǒng)的振蕩頻率緊密相關)定時器的定時時間與系統(tǒng)的振蕩頻率緊密相

3、關3 3)MCS-51MCS-51單片機的一個機器周期由單片機的一個機器周期由1212個振蕩脈沖組成個振蕩脈沖組成如果晶振頻率為如果晶振頻率為12MHZ12MHZ,則:,則:s112/110121T6S1S2S6S5S4S3機器周期1檢測S1S2S6S5S4S3計數(shù)機器周期2ALE檢測6.1.3 6.1.3 定時定時/ /計數(shù)器功能計數(shù)器功能(1)(1)定時功能定時功能(2)計數(shù))計數(shù)P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78RST/VPD9RXD P3.010TXD P3.111INT0 P3.212INT1 P3.313T0 P3.414T1 P3.5

4、15WR P3.616RD P3.717XTAL218XTAL119VSS20P2.021P2.122P2.223P2.324P2.425P2.526P2.627P2.728PSEN29ALE/PROG30EA/VPP31P0.732P0.633P0.534P0.435P0.336P0.237P0.138P0.039VCC408031 8051 8751S1S2S6S5S4S3機器周期1檢測S1S2S6S5S4S3計數(shù)機器周期2ALE檢測T1控制控制T0控制控制M0M1C/TGATEM0M1C/TGATED0D1D2D3D4D5D6D7M1 M0工作方式選擇工作方式選擇 1模式控制寄存器模式控

5、制寄存器TMODM1 M0C/T 定時定時/ /計數(shù)工作方式選擇計數(shù)工作方式選擇nGATE位:門控位。位:門控位。 (1) 當當GATE=1時,時,定時受外部脈沖的控制定時受外部脈沖的控制只有或引腳為只有或引腳為高電平且高電平且TR0或或TR1置置1時,相應時,相應的定時的定時/計數(shù)器才被選通工作,這時計數(shù)器才被選通工作,這時可用于測量可用于測量端出現(xiàn)的正脈沖寬度端出現(xiàn)的正脈沖寬度; (2) 當當GATE=0,則只要,則只要TR0和和TR1置置1,定,定時時/計數(shù)器就被選通,而不管或的電平是高還是計數(shù)器就被選通,而不管或的電平是高還是低。低。 定時定時/ /計數(shù)器工作方式計數(shù)器工作方式 M1

6、M0 工作方式 功 能 0 0 方式0 初值寄存器TL的低5位與TH的8位構成13位計數(shù)器 0 1 方式1 寄存器TL與TH構成16位計數(shù)器,計滿溢出,16位計數(shù)器回零 1 0 方式2 自動裝載8位計數(shù)器,TL溢出,TH內(nèi)容送TL 1 1 方式3 定時器T0分成兩個8位定時器,T1停止工作 D7D6D5D4D3D2D1D0TF1 TR1 TF0 TR0 IE1IT1IE0IT0觸發(fā)方式選擇觸發(fā)方式選擇啟動定時啟動定時/計數(shù)器計數(shù)器0 低電平低電平1 下降沿下降沿0 停止停止1 啟動啟動 * 各標志位應注意的問題各標志位應注意的問題TF1位:定時器位:定時器1溢出標志位。溢出標志位。 當定時當定

7、時/計數(shù)器計數(shù)器1溢出時,由溢出時,由硬件置硬件置1。 使用使用查詢方式查詢方式時,此位做狀態(tài)位供查詢,查詢有效時,此位做狀態(tài)位供查詢,查詢有效后需后需由軟件清零由軟件清零; 使用使用中斷方式中斷方式時,此位做中斷申請標志位,進入中時,此位做中斷申請標志位,進入中斷服務后被斷服務后被硬件自動清零硬件自動清零。TR1位:定時器位:定時器1運行位。運行位。 該位靠該位靠軟件置位或清零,置位軟件置位或清零,置位時,定時時,定時/計數(shù)器接通計數(shù)器接通工作,清零時,停止工作。工作,清零時,停止工作。 定時器計數(shù)器共有四種工作方式定時器計數(shù)器共有四種工作方式 1. 方式方式013位方式位方式 TF0T0T

8、R0GATEINT011&C/T=1振蕩器振蕩器1/12C/T=0TL0 TH08位位低低5位位13位計數(shù)器位計數(shù)器定時定時器器演演 示示繼繼 續(xù)續(xù)T12T5*T4T0TH0TL0返返 回回n當當 =0時,控制開關接通內(nèi)部振蕩器,時,控制開關接通內(nèi)部振蕩器,T0對機器周期進行計數(shù),其定時時間為:對機器周期進行計數(shù),其定時時間為: t=(213-T0初值)初值)機器周期機器周期n當當 =1時,控制開關接通外部輸入信號,時,控制開關接通外部輸入信號,當外部信號電平從當外部信號電平從“1”到到“0”跳變時,加跳變時,加1計數(shù)器加計數(shù)器加1,處于計數(shù)工作方式。,處于計數(shù)工作方式。 C / TC

9、 / T2. 方式方式116位方式位方式其定時時間為:其定時時間為:t=(216-T0初值)初值)機器周期機器周期 振蕩器1/12TL0 TH0TF011&T0TR0GATEINT0C/T=0C/T=18位8位1616位計數(shù)器位計數(shù)器3. 方式方式28位自動裝入時間常數(shù)方式位自動裝入時間常數(shù)方式其定時時間為:其定時時間為:t=t=(2 28 8-T0-T0初值)初值)機器周期機器周期 TF0振蕩器振蕩器1/1211&T0TR0GATEINT0C/T=0C/T=1TL0 TH0 僅僅T0可以工作在方式可以工作在方式3此時此時T0分成分成2個個 獨立的計數(shù)器獨立的計數(shù)器TL0和和T

10、H0 , TL0用來作為用來作為T0的控制信號(的控制信號(TR0、TF0),), TH0用來用來作為作為T1的控制信號(的控制信號(TR1、TF1)。)。6.4 單片機定時器單片機定時器/計數(shù)器的應用計數(shù)器的應用 計算計數(shù)器的計算計數(shù)器的計數(shù)初值計數(shù)初值: 編程時將計數(shù)初值送編程時將計數(shù)初值送THi、 TLi; 可編程器件在使用前需要進行可編程器件在使用前需要進行初始化初始化: 確定確定TMOD控制字控制字:編程時將控制字送:編程時將控制字送 TMOD; 開中斷(如果使用中斷方式)開中斷(如果使用中斷方式): 編程實編程實置位置位EA、ETi TRi位置位控制定時器的啟動和停止。位置位控制定

11、時器的啟動和停止。例例1 1:設晶振頻率設晶振頻率f fOSCOSC=6MHz=6MHz,使用,使用定時器定時器1 1以方式以方式1 1產(chǎn)產(chǎn)生周期為生周期為500s500s的方波脈沖,并的方波脈沖,并由由P1.0 P1.0 輸出輸出。試以。試以中斷方式中斷方式實現(xiàn)。實現(xiàn)。80518051P1.0P1.0500s500s TMOD確定確定T1控制控制T0控制控制XXXX1000M0M1C/TGATEM0M1C/TGATE控制字控制字10H定時器定時器1方方 式式1 要產(chǎn)生要產(chǎn)生500s 的方波脈沖,只需在的方波脈沖,只需在P1.0端以端以250s為間為間隔,隔,交替輸出高低電平交替輸出高低電平即

12、可實現(xiàn)。為此,即可實現(xiàn)。為此,定時間應為定時間應為250s 。使用。使用6z晶振,則一個機器周期為晶振,則一個機器周期為2s,設待,設待求計數(shù)初值為,則:求計數(shù)初值為,則:(216X)210 -6 =25010 -6 即即216X=125 X216-125=10000H-7DH 0FF83H所以,初值為:所以,初值為:TH1=0FFH,TL1=83H請思考請思考 為什么?為什么? 采用中斷方式:編程時打開全局和局部中斷采用中斷方式:編程時打開全局和局部中斷。 由定時器控制寄存器由定時器控制寄存器TCON中的中的TR1位控制位控制定時器的啟動和停止。定時器的啟動和停止。 TR11,啟動;,啟動;

13、 TR10,停止。,停止。 程序設計程序設計 ORG 0000H LJMP MAIN ;主程序入口;主程序入口 ORG 001BH LJMP INTT1 ;T1中斷入口中斷入口INTT1: MOV TH1,#0FFH ;重新設置初值;重新設置初值 MOV TL1,#83H CPL P1.0 ;輸出取反;輸出取反 RETI ORG 1000HMAIN:MOV TMOD, #10H ;T1為方式為方式1 MOV TH1, #0FFH MOV TL1,#83H ;初值;初值 SETB EA ;允許中斷;允許中斷 SETB ET1 SETB TR1 ;啟動定時;啟動定時 SJMP $ ;等待中斷;等待

14、中斷例例2:利用利用T0定時,產(chǎn)生定時,產(chǎn)生2s定時,使得定時,使得P1口輸出信號,控制口輸出信號,控制8個發(fā)光二極管循環(huán)點亮,個發(fā)光二極管循環(huán)點亮,設設fOSC=12MHz. 。分析:分析:P1口輸出信號,控制口輸出信號,控制8個發(fā)光二極管循環(huán)個發(fā)光二極管循環(huán)點亮,但此處由于定時時間長達點亮,但此處由于定時時間長達2s,所以單靠,所以單靠一個定時器不能解決問題??梢圆扇∫粋€定時器不能解決問題??梢圆扇∮布〞r和硬件定時和軟件計數(shù)軟件計數(shù)(或硬件計數(shù))結(jié)合方式。(或硬件計數(shù))結(jié)合方式。P1.0P1.7RLED3RLED0RLED1RLED2RLED4RLED5RLED6RLED7P1.6P1.

15、5P1.4P1.3P1.2P1.18051演演 示示硬件定時與軟件計數(shù)結(jié)合方式解題思路:硬件定時與軟件計數(shù)結(jié)合方式解題思路: 讓讓T0作定時器用,如作定時器用,如T0可以定時可以定時50ms; 在在T0中斷處理程序中一個寄存器內(nèi)容加中斷處理程序中一個寄存器內(nèi)容加1,同時判斷,同時判斷是否加到是否加到2000/50=40,如果不到,如果不到40,則直接返回,如,則直接返回,如果計到果計到40,說明,說明2s時間到;時間到; 使使P1口循環(huán)點亮口循環(huán)點亮8個發(fā)光二極管后再返回。個發(fā)光二極管后再返回。 T0工作在方式工作在方式1,控制字,控制字01H,計數(shù)初值:計數(shù)初值:(216X)110 -6 =

16、5010 -3 即即216X=50000 X216-50000=10000H-C350H 3CB0H所以,初值為:所以,初值為:TH1=3CH,TL1=B0H ORG 0000H LJMP MAIN ;主程序入口;主程序入口 ORG 000BH LJMP INTT0 ;T0中斷入口中斷入口 思考:思考:其他中斷入口的其他中斷入口的 地址?地址? ORG 1000HMAIN:MOV TMOD, #01H ;T0為方式為方式1 MOV TH0, #3CH MOV TL0,#B0H ;初值;初值 SETB EA ;允許中斷;允許中斷 SETB ET0 SETB TR0 ;啟動定時;啟動定時 MOV

17、A,#01H ; LED0先亮先亮 MOV P1,A ; MOV R0,#0 SJMP $ ;等待中斷;等待中斷INTT0: MOV TH0,#3CH ;重新設置初值;重新設置初值 MOV TL0,#B0H INC R0 CJNE R0,#40,NEXT ;不等直接返回;不等直接返回 MOV R0,#0 ; 2s到到 RL A ;依次點亮;依次點亮 NEXT: RETIn 設計一個控制程序,使設計一個控制程序,使80C5180C51的的P1P1口輸口輸出出8 8路低頻方波脈沖,頻率分別為路低頻方波脈沖,頻率分別為100100、5050、2525、2020、1010、5 5、2 2、1Hz1Hz

18、。設單片機的晶振。設單片機的晶振頻率為頻率為12MHz12MHz。試編程實現(xiàn)。試編程實現(xiàn)。 例例3 3:低頻信號發(fā)生器驅(qū)動程序:低頻信號發(fā)生器驅(qū)動程序 分析:分析:n使用定時器使用定時器T0T0,產(chǎn)生,產(chǎn)生5ms5ms的定時,若晶振選的定時,若晶振選12MHz12MHz,則則5ms5ms相當于相當于46084608個機器周期,個機器周期,T0T0應工作于方式應工作于方式1 1,初值位初值位x x為:為:x=65536-4608=60928x=65536-4608=60928。用十六進制數(shù)。用十六進制數(shù)表示則:表示則:x=0EE00Hx=0EE00H。n對應于對應于P1.0 P1.0 P1.7P

19、1.7,設立,設立8 8個計數(shù)器,初值分別個計數(shù)器,初值分別為為1 1、2 2、4 4、5 5、1010、2020、5050、100100,由,由T0T0的溢出中的溢出中斷服務程序?qū)λ鼈儨p斷服務程序?qū)λ鼈儨p“1”1”計數(shù),當減為零時恢復計數(shù),當減為零時恢復初值,并使相應的口線改變狀態(tài),這樣就使初值,并使相應的口線改變狀態(tài),這樣就使P1P1口口輸出所要求的方波。輸出所要求的方波。n ORG 0000HnSTART: AJMP MAINn ORG 000BHn AJMP PTFOnMAIN: MOV SP,#70n MOV 31H,#2 ;計數(shù)器置初值;計數(shù)器置初值n MOV 32H,#4n MO

20、V 33H,#5n MOV 34H,#10n MOV 35H,#20n MOV 36H,#50n MOV 37H,#100n 主程序n MOV TMOD,#1 ;T0方式方式1定時定時n MOV TL0,#0 ;初值;初值T0n MOV TH0,#0EEHn MOV IE,#82H ;允許;允許T0中斷中斷n SETB TR0 ;允許;允許T0計數(shù)計數(shù)n HERE: SJMP HERE ;踏步,通常;踏步,通常CPU處處理其他工作理其他工作n ORG 0030HnPTF0: MOV TH0,#0EEH ;T0中斷服務程序中斷服務程序n MOV TL0,#0 ;初值;初值T0n CPL P1.0

21、n DJNZ 31H,PF01 ;對各路計數(shù)器進行計數(shù);對各路計數(shù)器進行計數(shù)n MOV 31H,#2 ;計數(shù)器減為;計數(shù)器減為0,恢復計數(shù)初,恢復計數(shù)初值值n CPL P1.1nPF01: DJNZ 32H,PF02 ;輸出相反;輸出相反n MOV 32H,#4n CPL P1.2nPF02: DJNZ 33H,PF03n MOV 33H,#5n CPL P1.3中斷程序nPF03: DJNZ 34H,PF04n MOV 34H,#10n CPL P1.4nPF04: DJNZ 35H,PF05n MOV 35H,#20n CPL P1.5nPF05: DJNZ 36H,PF06n MOV 3

22、6H,#50n CPL P1.6nPF06: DJNZ 37H,PF07n MOV 37H,#100n CPL P1.7nPF07: RETI中斷程序例例4:設晶振頻率設晶振頻率fOSC=6MHz,分別討論各種工,分別討論各種工作方式下最長定時時間。作方式下最長定時時間。解:解:1. 由由fOSC=6MHz可知,可知,MC=2us;2. 由于是加由于是加1計數(shù),所以最長定時應是計數(shù),所以最長定時應是計數(shù)初值最計數(shù)初值最小時(即為小時(即為0時)時)的定時時間。的定時時間。所以此時有:所以此時有:方式方式0: (2130)2us=214us=16384us=16.384ms方方 式式 1: (2

23、160)2us= 217us=131.072ms方式方式2、3: (280)2us= 29us=0.512ms注意:注意:以上是當以上是當fOSC=6MHz,即,即MC=2us時各時各種方式下的定時時間,若種方式下的定時時間,若fOSC=12MHz,則最長,則最長定時時間將縮短一半。定時時間將縮短一半。例例5 5:如下圖所示,開始時如下圖所示,開始時P1.0P1.0亮,延時亮,延時0.20.2秒后秒后左移至左移至P1.1P1.1亮,如此左移亮,如此左移7 7次后至次后至P1.7P1.7亮,再延亮,再延時時0.20.2秒右移至秒右移至P1.6P1.6亮,如此右移亮,如此右移7 7次后至次后至P1

24、.0P1.0亮。亮。(時鐘頻率(時鐘頻率f fOSCOSC為為12MHz12MHz)。)。 2000us2000us初值初值( (方式方式0 0):): 6192=6192=1830=1830=00000011000001100001100000110000 = =1100 00011100 000100000010000=10000=C110HC110H n方法方法 : 延延時時間時時間0.20.2秒,使用秒,使用TIMER0TIMER0在在MODE0MODE0下工作下工作 n ORG 0000H ORG 0000H ;起始地址;起始地址n AJMP MAINAJMP MAINn nMAIN: MOV TMODMAIN: MOV TMOD,#00H #00H ;設設定工作在定工作在MODE0MODE0nSTARTSTART:CLR C CLR C ;C=0C=0n MOV A MOV A,#0FFH #0FFH ;ACC=FFHACC=FFH,左移初,左移初值值 n MOV R2MOV R2,#08 #08 ;R2=08R2=08,設設左

溫馨提示

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

評論

0/150

提交評論