




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第4章 單片機的中端系統及定時器/計數器4.2 定時/計數器微波爐中的定時器微波爐中的定時器2設定加熱一只雞的時間為15分鐘(900s),啟動后微波爐開始倒計時,并在顯示屏上顯示剩余時間。單片機每過1s 更新一次顯示時間,當更新顯示900次后就讓微波爐停止加熱。自行車上的計數器自行車上的計數器3霍爾開關每當車輪轉過一圈時磁鐵接近一次霍爾開關,于是就會輸出一個脈沖。如果把這個脈沖輸入單片機,單片機可以在每次脈沖到來時計一個數,假設60秒內單片機的計數值為n,車輪的半徑為r,于是車輪的周長為C=2r,得自行車的行駛速度為:226060CrrnVTn4計數器的容量計數器的容量 8051單片機內部有兩
2、個計數器,分別稱為T0和T1,這兩個計數器分別由兩個兩個8位位的RAM單元組成,即每個計數器都是16位的計數器,最大的計數量是65536。溢出 來看水滴的例子,當水持續落下,最終有一滴水使得盆中的水滿了。這時如果再有一滴水落下,水會溢出來。單片機計數器的容量是16位,也就是說,最大的計數值為65536,因此計數計到65536時就會產生溢出。一旦產生溢出,單片機內部定時器控制寄存器一旦產生溢出,單片機內部定時器控制寄存器TCON中中的的TF0/TF1變為變為“1”。定時計數器的工作原理定時計數器的工作原理 計數器的最大的計數值為65536,因此計數計到65536就會產生溢出。如果要計數100,就
3、先往計數器中放進65436,再來100個脈沖,就會產生溢出。 定時也是如此,假如每個脈沖是1s,則計滿65536個脈沖需時65.536ms。如果只要定時10ms,10ms為10000s,所以,只要在計數器里面放進55536就可以了。定時器/計數器的方式寄存器TMOD TMOD在特殊功能寄存器中,字節地址為89H定時器/計數器的控制字(1)GATE位:門控位。當GATE=0時,只要TCON中的TR0為1就能使計數器工作。當GATE=1和TR0=1時,是否計數取決于INT0引腳的信號,當INT0由0變為1時,開始計數;當INT0由1變為0時,停止計數。(2)C/T位:計數器模式和定時器模式的選擇位
4、。C/T=0時,為定時器模式。C/T=1時,為計數器模式。 (3)M1M0:4種工作方式的選擇位。通過對M1M0的設置,可使定時器工作于4種工作方式之一,如表6-1所示。TCONTCON寄存器寄存器TF0/TF1(TCON.5/7),定時器溢出標志位),定時器溢出標志位=0=0:定時器未溢出;:定時器未溢出;=1=1:定時器溢出。:定時器溢出。TR0/TR1TR0/TR1:定時器運行啟停控制位:定時器運行啟停控制位: =0=0:定時器停止運行;:定時器停止運行; =1=1:定時器啟動運行。:定時器啟動運行。工作方式工作方式1: 16位定時位定時/計數器計數器在這種方式下,由TH0的8位和TL0
5、的8位組成一個16位計數器。最大計數值為65536。當16位計數器從設定的初值不斷加1直到溢出時,置置TCON的的TF0位為位為1,系統把計數器清,系統把計數器清“0”。工作方式工作方式0: 13位定時位定時/計數器計數器在這種方式下,由TH0的8位和TL0的低5位組成一個13位計數器。最大計數值為8192。當16位計數器從設定的初值不斷加1直到溢出時,置置TCON的的TF0位為位為1,系統把計數器清,系統把計數器清“0”。P122【例例4-9】P2.0接LED,高電平亮,單片機所接晶振12MHz,用定時器的查詢方式實現燈的閃爍。要求亮、暗間隔60ms。 R2220XTAL218XTAL119
6、ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT8
7、9C51C122pFC222pFC310uFX112MR110kD1P122【例例4-9】P2.0接LED,高電平亮,單片機所接晶振12MHz,用定時器的查詢方式實現燈的閃爍。要求亮、暗間隔60ms。 分析:分析:每個機器周期為1s,使用工作方式1,可以定時65.536ms;方式0可以定時8.192ms 假設應用的是定時器1,工作在方式1,利用TMOD設置方法可知TMOD=00010000B。 需要往定時器里放入預置數: 65536-60ms/1s =5536=15A0H. 程序清單如下: ORG 0000H AJMP MAIN ORG 0030H MAIN:MOV P2, #00H ;關所有
8、的燈 MOV TMOD, #00010000B;定時器/計數器1工作于方式1 MOV TH1, #15H MOV TL1, #0A0H;預置數5536 SETB TR1 ;定時器定時器/計數器計數器1開始運行開始運行 LOOP:JBC TF1,NEXT ;若TF1為1清TF1并轉NEXT處 AJMP LOOP ;否則跳轉到LOOP處運行 NEXT:CPL P2.0 MOV TH1, #15H MOV TL1,#0A0H ;重置定時器重置定時器/計數器的初值計數器的初值 AJMP LOOP SJMP $ END工作方式工作方式0: 13位定時位定時/計數器計數器在這種方式下,由TH0的8位和TL
9、0的低5位組成一個13位計數器。最大計數值為8192。當16位計數器從設定的初值不斷加1直到溢出時,置置TCON的的TF0位為位為1,系統把計數器清,系統把計數器清“0”。工作方式工作方式2:自動裝載初值的:自動裝載初值的8位定時器位定時器 方式2把TL0配置成一個可以自動恢復初值的8位計數器,TH0作為常數緩沖器,由軟件預置值。 當TL0產生溢出時,一方面使溢出標志TF0置1,同時把TH0中的8位數據重新裝入TL0中。此動作是由硬件自動完成此動作是由硬件自動完成的,不需要軟件,這不同于方式的,不需要軟件,這不同于方式0和方式和方式1。 工作方式3 在這種工作方式下T0被拆成兩個獨立的定時器/
10、計數器來用。 TL0可以構成8位的定時器或計數器的工作方式,并使用T0的控制位、TF0的中斷源。 TH0則只能作為定時器來用,使用則只能作為定時器來用,使用T1中的中的TR1、TF1的中斷的中斷源。源。 工作方式3 需要注意的是,方式3是將T0拆成兩個獨立的8位定時器/計數器來用,而不是T1,如果把T1置于方式3,T1將處于關閉狀態。 一般情況下,T0以工作方式3狀態運行,僅在T1工作于方工作于方式式2而且不要求中斷的前提下而且不要求中斷的前提下才可以使用,此時T1可被用作串行口波特率發生器。 方式方式3特別適合于單片機需要特別適合于單片機需要1個獨立的定時器個獨立的定時器/計數器、計數器、1
11、個定時器及個定時器及1個串行口波特率發生器的情況。個串行口波特率發生器的情況。定時器/計數器的預置數的計算方法 1計數器初值的計算 把計數器從初值開始作加1計數到計滿溢出所需要的計數值設定為C,計數初值設定為D,由此便可得到以下的計算通式:D=M-C (6-1) 式中,M為計數器模值,該值和計數器工作方式有關,在方式0時M為213 ,在方式1時M為216 ,在方式2和方式3時M為2 8 。 2定時器初值的計算 在定時器模式下,定時器定時時間T的計算公式為:T=(TM-TC)12/fOSCs (6-2) 式中,TM為計數器從初值開始作加1計數到計滿溢出所需要的時間,TM為模值,與定時器的工作方式
12、有關;fOSC是單片機晶體振蕩器的頻率;TC為定時器的定時初值。在式(6-2)中,若設TC =0,則定時器定時時間為最大(初值為0,計數從全0到全1,溢出后又為全0)。 【例【例6-1】設T0在方式0下工作,定時時間為1ms,時鐘振蕩頻率為6MHz。計算預置數。 解:將數據代入公式(6-2)得:(213-TC)12/6 s =1ms=1000sTC=213 -500=7692=1E0CH=1111000001100B 因為TL1的高3位沒用,對計算出的TC要進行修正,即在低5位前插入3個0,修正后的定時初值X=1111000000001100B=F00CH。可用下列指令實現。MOV TL0,#
13、0CH;5位送TL0寄存器 MOV TH0,#0F0H ;8位送T0寄存器 13【例例4-6】若單片機時鐘頻率fOSC為12MHz,請計算定時2ms所需的定時器初值。 解:由于定時器工作在方式2和方式3下時的最大定時時間只有0.256ms,要定時2ms,則要用到循環程序,因此用方式0或方式1較方便。 若采用方式0,則根據式(6-2)可得定時器初值為:TC=213 -2ms/1s=6129 利用計算機附件中的計算器可將6129轉換為十六進制數為1830H。注意:這不是定時器工作在方式0時的初值,因定時器工作在方式0時是13位,高字節8位,低字節5位,所以還要進行適當的變換,修正后為C110H。即
14、:TH0應預置C1H,TL0應預置10H(高3位為0)。 若采取方式1,則有: TC=216-2ms/1s=63536=F830H 即:TH0應預置F8H,TL0應預置30H。程序清單如下: ORG 0000H AJMP MAIN ORG 0030H MAIN:MOV P2, #00H ;關所有的燈 MOV TMOD, #00010000B;定時器/計數器1工作于方式1 MOV TH1, #15H MOV TL1, #0A0H;預置數5536 SETB TR1 ;定時器定時器/計數器計數器1開始運行開始運行 LOOP:JBC TF1,NEXT ;若TF1為1清TF1并轉NEXT處 AJMP L
15、OOP ;否則跳轉到LOOP處運行 NEXT:CPL P2.0 MOV TH1, #15H MOV TL1,#0A0H ;重置定時器重置定時器/計數器的初值計數器的初值 AJMP LOOP SJMP $ ENDlEA:總允許位(一級控制)。EA=0時,禁止一切中斷;EA=1時,中斷開放。lET1、ET0:定時器T1、T0允許位,ET1=1或ET0=1時,允許TF1或TF0引發中斷,否則禁止相應的定時器中斷。定時定時/ /計數中斷計數中斷 -TCON-TCON的定時的定時/ /計數器中斷標志計數器中斷標志TF0/TF1(TCON.5/7),定時器溢出中斷請求位),定時器溢出中斷請求位=0=0:定
16、時器未溢出;:定時器未溢出;=1=1:定時器溢出申請中斷,進中斷后自動清零。:定時器溢出申請中斷,進中斷后自動清零。TR0/TR1TR0/TR1:定時器運行啟停控制位:定時器運行啟停控制位: =0=0:定時器停止運行;:定時器停止運行; =1=1:定時器啟動運行。:定時器啟動運行。(2)用定時器的中斷方式。 ORG 0000H AJMP MAIN ORG 001BH ;定時器1的中斷向量地址 AJMPTIME1 ;跳轉到真正的定時器程序處 ORG 0030H MAIN: MOV P1, #0FFH;關所有的燈 MOV TMOD, #00010000B;定時器/計數器1工作于方式1 MOV TH
17、1, #15H MOV TL1, #0A0H;預置數5536 SETBEA ;開總中斷允許 SETBET1 ;開定時器/計數器1允許 SETBTR1 ;定時器/計數器1開始運行LOOP: AJMP LOOP ; 真正工作時,這里可寫任意程序TIME1: PUSHACC ; 定時器1的中斷處理程序 PUSHPSW ; 將PSW和ACC壓入堆棧保護 CPL P1.0 MOV TH1, #15H MOV TL1,#0A0H; 重置定時常數重置定時常數 POP PSW POP ACC RETI ; 中斷返回 END定時器定時器/計數器的初始化步驟:計數器的初始化步驟: (1)確定工作方式(即對TMOD
18、賦值)。 (2)預置定時或計數的初值(可直接將初值寫入TH0、TL0或TH1、TL1)。 (3)根據需要開放定時器/計數器的中斷(直接對IE位賦值)以及給中斷優先級寄存器IP選送中斷優先級字,以開放相應中斷和設定中斷優先級。 (4)啟動定時器/計數器。若用軟件啟動,則可把TR0或TR1置1;若由外部中斷引腳電平啟動,則需給外部引腳加啟動電平。 【例例4-7】設T1作定時器用,以方式1工作,定時時間為10ms;T0作計數器,以方式2工作,外界發生一次事件即溢出,寫出初始化程序。 解解:T1的時間常數為: (216-TC)2s=10ms TC=EC78H 程序:MOVTMOD,#16H ;T1定時
19、方式1,T0計數方式2,即置TMOD寄存器的內容為00010110B MOVTL0,#0FFH;T0時間常數送TL0 MOVTH0,#0FFH;T0時間常數送TH0 MOVTL1,#78H ;T1時間常數(低8位)送TL1 MOVTH1,#0ECH;T1時間常數(高8位)送TH1 SETBTR0;置TR0為1允許T0啟動計數 SETBTR1;置TR1為1允許T1啟動計數【例例4-8】設定時器T0以方式1工作,編寫一個延時1s的子程序。 解解:若主頻為6MHz,可求得T0的最大定時時間為:TM max=216 2s=131.072ms 用定時器獲得100ms的定時時間再加10次循環得到1s的延時
20、,可算得100ms定時的預置數為: (216-TC)2s=100000s=100ms TC=216-50000=15536 TC=3CB0H程序如下: ORG0200H MOVTMOD,#01H ;T0工作方式1 MOVR7,#10 ;循環次數 TIME: MOVTL0,#0B0H;放預置數 MOVTH0,#3CH SETB TR0 ;啟動定時器0 LOOP1: JBC TF0,LOOP2 ;查詢TF0標志看是否計滿 JMP LOOP1 LOOP2: DJNZ R7,TIME ;進行10個100ms及1s的計時 SJMP $ END【例例4-10】P1.0接LED,低電平亮,單片機所接晶振12
21、MHz,用定時器中斷方式實現燈的閃爍。要求亮、暗間隔1s。解: ORG 0000H AJMP MAIN ORG 001BH ; 定時器1的中斷向量地址 AJMP TIME1 ; 跳轉到真正的定時器程序處 ORG 0030HMAIN: MOV P1,#0FFH ; 關所有燈 MOV 30H,#00H ; 循環次數清循環次數清0 MOV TMOD, #00010000B ; 定時器定時器/計數器計數器1工作于方式工作于方式1 MOV TH1, #3CH MOV TL1,#0B0H; 即數即數15536(一次定時一次定時50ms的初值的初值) SETB EA ; 開總中斷允許開總中斷允許 SETB ET1 ; 開定時
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025財務人員合同書范本
- 2025年上海企業(事業)單位勞動合同
- 2025勞動合同書(示范文本)
- 2025二手房買賣合同全文版
- 2025餐廳臨時廚師勞動合同
- 2025水利工程建筑施工合同(范本)
- 《貓咪與花園:互動教學課件》
- 2025標準別墅裝修合同范本
- 大學生職業規劃190
- 申請甲方盡快簽合同協議
- 全國飛盤運動裁判法(試行)
- 蘇教版高中數學必修第一冊第1章1.1第2課時集合的表示【授課課件】
- 地方病防治技能理論考核試題
- 浙江省土地整治項目預算定額
- 期刊編輯的學術期刊編輯規范考核試卷
- 北師大版四年級下冊小數乘法豎式計算200題及答案
- 測控電路智慧樹知到期末考試答案章節答案2024年武漢科技大學
- SL-T+62-2020水工建筑物水泥灌漿施工技術規范
- DL-T5344-2018電力光纖通信工程驗收規范
- 2024年四川省南充市中考生物試卷真題(含官方答案)
- 《灰塵的旅行》測試題答案
評論
0/150
提交評論