版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、5.2 用Keil C51開發(fā)定時器/計數(shù)器基本的MCS-51單片機內(nèi)部有兩個16位可編程的定時器/計數(shù)器T0和T1。它們各自具有4種工作狀態(tài),其控制字和狀態(tài)均在相應(yīng)的特殊功能寄存器中,可以通過軟件對控制寄存器編程設(shè)置,使其工作在不同的定時狀態(tài)或計數(shù)狀態(tài)?,F(xiàn)在,許多廠家生產(chǎn)的8051兼容單片機上,還加入了定時器/計數(shù)器2,使單片機的應(yīng)用更為靈活,適應(yīng)性更強。很多8051單片機的書籍都對定時器/計數(shù)器有詳細的介紹,我們在此不再詳細地討論。但因為編寫或或閱讀程序時經(jīng)常要查閱定時器/計數(shù)器的設(shè)置情況,因此我們僅對一些編程時經(jīng)常要用到的較重要的寄存器和設(shè)置方式進行簡要簡介。5.2.1
2、60; 定時器/計數(shù)器簡介8051單片機的定時器/計數(shù)器基本結(jié)構(gòu)如圖5-2所示,定時器T0由兩個8位計數(shù)器TH0和TL0構(gòu)成,定時器T1也由兩個8位計數(shù)器TH1和TL1構(gòu)成,TMOD寄存器控制定時器的工作方式,TCON寄存器控制定時器的啟動和停止以及定時器的狀態(tài)。圖5-2 定時器/計數(shù)器結(jié)構(gòu)在作定時器使用時,輸入的時鐘脈沖是由晶體振蕩器的輸出經(jīng)12分頻后得到的。實際上,定時器就是單片機機器周期的計數(shù)器。因為每個機器周期包含晶體振蕩器的12個振蕩周期,而每一個機器周期定時器加1,故其頻率為晶振頻率的1/12。如果晶振頻率為12MHz,則定時器每接收一個輸入脈沖的時間為1µs
3、。選擇計數(shù)器工作方式時,計數(shù)脈沖來自相應(yīng)的外部輸入引腳T0(P3.4)或T1(P3.5)。在這種情況下,當檢測到輸入引腳上的電平由高跳變到低時,計數(shù)器就加1。5.2.2 控制和狀態(tài)寄存器(1)定時器控制寄存器(TCON)TCON為定時器/計數(shù)器的控制寄存器,同時也鎖存外部中斷請求標志,各位定義如下。Ø TF1:定時器/計數(shù)器1中斷請求標志位。當定時器計數(shù)滿溢出回零時,由硬件置位,并可申請中斷。當CPU響應(yīng)中斷并進入中斷服務(wù)程序后,TF1自動清零。Ø TR1:定時器/計數(shù)器1運行控制位,靠軟件置位或清除。置位時,定時器/計數(shù)器1接通工作,清
4、除時停止工作。Ø TF0:定時器/計數(shù)器0中斷請求標志位,其功能和操作情況類同于TF1。Ø TR0:定時器/計數(shù)器0運行控制位,其功能和操作情況類同于TR1。Ø IEl:外部中斷1的中斷申請標志,檢測到在INT引腳上出現(xiàn)的外部中斷信號的下降沿時,由硬件置位,申請中斷。進入中斷服務(wù)程序后被硬件自動清除。Ø IT1:外部中斷1的類型控制位。IT1=1,由下跳沿觸發(fā);IT10,由低電平觸發(fā)??梢杂绍浖碓O(shè)置或清除。Ø IE0:外部中斷0的中斷申請標志。其功能和操作情況類同于IE1。Ø
5、; IT0:外部中斷0的類型控制位。其功能和操作情況類同于IT1。(2)工作方式寄存器(TMOD)。TMOD確定定時器的工作方式及功能選擇,不能位尋址。其中,高4位用于控制定時器1,低4位用于控制定時器0。TMOD各位的定義如下。Ø GATE:門控位,當GATE1時,只有¯I¯N¯T¯0或¯I¯N¯T¯1引腳為高電平,且TR0或TR1置1時,定時器/計數(shù)器才工作。當GATE0時,定時器/計數(shù)器僅受TR0或TR1的控制,而不管¯I¯N¯T¯0或
6、¯I¯N¯T¯1引腳的電平是高還是低。Ø C/¯T:定時器/計數(shù)器功能選擇位,C/¯T0時,設(shè)置為定時功能;C/¯T1時,設(shè)置為計數(shù)功能。Ø M1 M0 :工作方式選擇位。由M1M0共2位形成4種編碼,對應(yīng)以下4種工作方式。 n M1M000:工作方式0(13位方式)。 n M1M001:工作方式1(16位方式)。 n M1M010:工作方
7、式2(8位自動裝入時間常數(shù)方式)。 n MlM011:工作方式3(2個8位方式僅對T0)。5.2.3 定時器/計數(shù)器設(shè)置實例以定時器/計數(shù)器T0為例,在方式0下,TL0的低5位和TH0的8位構(gòu)成13位計數(shù)器,因此計數(shù)工作方式時,計數(shù)值的范圍是:18192(213)。當設(shè)定為定時工作方式時,定時時間的計算公式為: (213計數(shù)初值)
8、215;晶振周期×12 或 (213計數(shù)初值)×機器周期這樣,我們可以算出,若單片機系統(tǒng)的外接晶振頻率為6MHz,則該系統(tǒng)的最小定時時間為: 213(2131)×1/(6×106)×122&
9、#215;1062(µs)最大定時時間為: (2130)×1/(6×106)×1216384×10616384(µs)=16.384(ms)或:最小定時單位×101316384(µs)=16.384(ms)【例】某單片機系統(tǒng)的外接晶振頻率為6MHz,使用定時器1,以方式0定時,從P1.0輸出2ms方波的計算和設(shè)置方法如下: 計算計數(shù)初值。欲產(chǎn)生2ms
10、的等寬正方波脈沖,只需在P1.0端以1ms為周期交替輸出高低電平即可實現(xiàn),為此定時時間應(yīng)為1ms。使用6MHz晶振,則機器周期為: 機器周期=12/晶振頻率=12/(6×106)=2
11、(µs)方式0為13位計數(shù)結(jié)構(gòu)。設(shè)待求的計數(shù)初值為X,則:
12、160; (213-X)×2×10-61×10-3求解得:
13、0; X7692化為二進制數(shù)表示為1111000001100。用十六進制表示,高8位為F0H,放入TH1;低5位為0CH,放入TL1。 TMOD寄存器初始化。為把定時器/計數(shù)器1設(shè)定為方式0,設(shè)置M1M000;為實現(xiàn)定時功能,應(yīng)使C/¯T 0;為實現(xiàn)定時器/計數(shù)器1的運行控制,設(shè)置GATE
14、0。定時器/計數(shù)器0不用,有關(guān)位設(shè)定為0。因此TMOD寄存器應(yīng)初始化為00H。 由定時器控制寄存器TCON中的TR1位控制定時的啟動和停止,TR11啟動,TR10停止。若使其工作在方式1,定時器/計數(shù)器為16 位定時器/計數(shù)器,即加法計數(shù)器由 TH0 全部8位和TL0全部8位構(gòu)成16位,其余與方式0完全相同,因此計算TH0和TL0初值的方法也和工作方式0類似,只是需注意原來13位的地方現(xiàn)在要換成16位。5.2.4 定時器/計數(shù)器28051單片機中,有一部分型號有三個定時器/計數(shù)器,如Intel的8032、Atmel的89C52、89C55、Philips的89C51RC、89C58
15、,等等。這些單片機的第三個定時器/計數(shù)器叫T2,其控制寄存器是T2CON,它的各位定義如下:Ø TF2:定時器2溢出標志。定時器溢出時置位,并申請中斷,只能靠軟件清除。當RCLK或TCLK =1 時TF2 將不會置位。Ø EXF2:定時器2外部標志。當EXEN2為1,且T2EX 引腳上出現(xiàn)負跳變產(chǎn)生捕獲或重裝時EXF2置位,申請中斷。若已允許定時器2 中斷,EXF2=1 將使CPU 從中斷向量處執(zhí)行定時器2中斷子程序。EXF2 位必須用軟件清零。當定時器/計數(shù)器2工作在向上遞增或向下遞減計數(shù)器模式(方式控制寄存器T2MOD的DCEN位=1)時,EXF
16、2 不能激活中斷。Ø RCLK:接收時鐘標志??寇浖梦换蚯宄CLK=1時,用定時器2溢出脈沖作為串行口(工作于方式1或3時)的接收時鐘。RCLK=0時,用定時器1的溢出脈沖作為接收時鐘。Ø TCLK:發(fā)送時鐘標志??寇浖梦换蚯宄?。TCLK=1時,用定時器2溢出脈沖作為串行口(工作于方式1或3時)的發(fā)送時鐘。TCLK=0時,用定時器1的溢出脈沖作為發(fā)送時鐘。Ø EXEN2:定時器2外部允許標志??寇浖梦换蚯宄?。當EXEN2=1時,如果定時器2未用作串行口的波特率發(fā)生器,在T2EX端出現(xiàn)負跳變脈沖時,激活定時器2捕獲或重裝
17、,并置EXF2標志為1,請求中斷。EXEN2=0時,T2EX端的外部信號無效。Ø TR2:定時器2啟動/停止控制位??寇浖梦换蚯宄?。TR2=1時,啟動定時器2,否則停止。Ø C/¯T¯2:定時器2定時方式或計數(shù)方式控制位。C/¯T¯2=0,選擇定時方式;C/¯T¯2=1時,選擇對外部計數(shù)方式(下降沿觸發(fā))。Ø CP/¯R¯L¯2:捕獲/重裝載選擇。CP/¯R¯L¯2=1時,如果EXEN2=1,且T2EX端出現(xiàn)
18、負跳變脈沖時發(fā)生捕獲操作,即把TH2和TL2的內(nèi)容傳遞給RCAP2H和RCAP2L。CP/¯R¯L¯2=0時,若定時器2溢出或EXEN2=1,T2EX端出現(xiàn)負跳變脈沖,會出現(xiàn)重裝載操作,即把RCAP2H和RCAP2L的內(nèi)容傳遞給TH2和TL2。當RCLK=1或TCLK=1時,該位無效,在定時器2溢出時強制其自動重裝載。通過軟件設(shè)置T2CON,可使定時/計數(shù)器以三種基本工作方式之一工作。第一種為捕捉方式。設(shè)置為捕捉方式時,和定時器0 或定時器1 一樣以16 位方式工作。這種方式通過復(fù)位EXEN2來選擇。當置位EXEN2時,如果T2EX有負跳變電平,將把當前的數(shù)鎖存在
19、(RCAP2H和RCAP2L)中。這個事件可用來產(chǎn)生中斷。第二種工作方式為自動重裝方式,其中包含了兩個子功能,由EXEN2來選擇,當EXEN2復(fù)位時,16 位定時器溢出將觸發(fā)一個中斷并將RCAP2H 和RCAP2L 中的數(shù)裝入定時器中。當EXEN2 置位時,除上述功能外,T2EX 引腳的負跳變將產(chǎn)生一次重裝操作。最后一種方式用來產(chǎn)生串行口通信所需的數(shù)據(jù)傳輸率,這通過同時或分別置位RCLK 和TCLK來實現(xiàn)。在這種方式中,每個機器周期都將使定時器加1,而不像定時器0 和1 那樣,需要12個機器周期。這使得串行通信的數(shù)據(jù)傳輸率更高。定時器2還有一個不可尋址的方式控制寄存器T2MOD,其內(nèi)容如下:&
20、#216; :保留位。Ø T2OE:定時器2輸出允許位。Ø DCNE:置位時,允許定時器2作為向上/向下計數(shù)器。5.2.5 編程實例【例1】這是一個簡單的定時器程序,由一個循環(huán)組成,在點亮接在P1.0 口的LED之后,延時一段時間,再滅掉LED,又延時一段時間,之后循環(huán)到前面。按全速運行,可以看到P1.0口上接的LED 燈不斷地閃爍。#include <reg52.h> /包括一個52標準內(nèi)核的頭文件sbi
21、t P10 = P10; /要控制的LED燈sbit K1= P32; /按鍵K1/用定時器中斷閃爍LEDvoid main(void) /主程序 TM
22、OD=0x01; /定時器0,16位工作方式 TR0=1; /啟動定時器 ET0=1;
23、160; /打開定時器0中斷 EA=1; /打開總中斷 while(1)
24、60; /程序循環(huán) /主程序在這里就不斷自循環(huán),實際應(yīng)用中,這里是做主要工作
25、160; /定時器0中斷timer0() interrupt 1 / 定時器0中斷是1號 TH0=0x00; /寫入定時器0初始值0x0005 TL0=0x06; P10=P10;
26、; /反轉(zhuǎn)LED燈的亮和滅程序中,使用了定時器0,工作在方式1,即16位工作方式。For()循環(huán)后面直接一個分號,表示這個循環(huán)里面什么事情也不做,就等循環(huán)完成指定的次數(shù)就退出來。這也是指令循環(huán)延時的最常見的C 寫法?!纠?】這是一個跑馬燈程序,使用了定時器2。#include <reg52.h> /包括一個5
27、2標準內(nèi)核的頭文件sbit P10 = P10; /頭文件中沒有定義的IO就要自己來定義了sbit P11 = P11;sbit P12 = P12; sbit P13 = P13; bit ldelay=0; /長定時溢出
28、標記,預(yù)置是0/定時器中斷方式的跑馬燈void main(void) /主程序 unsigned char code ledp4=0xfe,0xfd,0xfb,0xf7;/預(yù)定的寫入P1的值 unsigned char ledi; /用來指示顯示順序
29、 RCAP2H =0x10; /賦T2的預(yù)置值0x1000,溢出30次就是1秒鐘 RCAP2L =0x00; TR2=1; &
30、#160; /啟動定時器 ET2=1; /打開定時器2中斷 EA=1;
31、; /打開總中斷 while(1) /主程序循環(huán) if(ldelay) /發(fā)現(xiàn)有時間溢出標記,進入處理
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45146-2024道路車輛氣壓及氣頂液制動系統(tǒng)試驗方法
- 北師大版八年級物理上冊《第一章物態(tài)及其變化》章末測試卷含答案
- 北師大版四年級上冊數(shù)學(xué)教案
- 農(nóng)業(yè)循環(huán)經(jīng)濟模式提升效益
- 能源大數(shù)據(jù)分析理論與實踐 課件 1.大數(shù)據(jù)概述
- 2024屆湖南省普通高中學(xué)高考仿真模擬化學(xué)試卷含解析
- 廈門市2024-2025學(xué)年度一學(xué)期高二年級質(zhì)量檢測數(shù)學(xué)試題(定稿)
- 2024高中地理第四章自然環(huán)境對人類活動的影響2全球氣候變化對人類活動的影響課時作業(yè)含解析湘教版必修1
- 2024高中生物第二章動物與人體生命活動的調(diào)節(jié)第4節(jié)免疫調(diào)節(jié)訓(xùn)練含解析新人教版必修3
- 2024高考歷史一輪復(fù)習方案專題五當今世界政治格局的多極化趨勢專題綜合測驗含解析人民版
- 2023年全國統(tǒng)一高考數(shù)學(xué)甲卷【文科+理科】試題及答案解析
- 廢品處置招標書
- GA/T 1280-2024銀行自助設(shè)備安全性規(guī)范
- 數(shù)據(jù)標注基地項目實施方案
- 靜脈治療??谱o士競聘
- 2024年第一季度醫(yī)療安全(不良)事件分析報告
- 中醫(yī)課件英語教學(xué)課件
- 《哪吒鬧?!冯娪百p析
- 2024年初一英語閱讀理解專項練習及答案
- 《邊緣計算與人工智能應(yīng)用開發(fā)技術(shù)》全套教學(xué)課件
- 人教部編版九年級語文下冊文言文基礎(chǔ)知識復(fù)習練習及答案(全冊文言文6篇)
評論
0/150
提交評論