第6章-定時器-計數器1總_第1頁
第6章-定時器-計數器1總_第2頁
第6章-定時器-計數器1總_第3頁
第6章-定時器-計數器1總_第4頁
第6章-定時器-計數器1總_第5頁
免費預覽已結束,剩余29頁可下載查看

付費下載

下載本文檔

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

文檔簡介

第6章定時器/計數器T0和T1的電路結構和工作原理基本相同Ti的工作原理簡要概括:核心部分是一個由時鐘信號觸發(fā)的按遞增規(guī)律工作的循環(huán)計數器;從預先設定的某一“初始值”開始計起,在累積到超過最大值時產生溢出,并同時會建立一個相應的溢出標志(即中斷標志位)TFi。6.1定時器/計數器T0和T1的特性

定時器/計數器的核心:一個加1計數器,其基本功能是加1計數。計數功能:若是對單片機的T0、T1引腳輸入信號進行計數,即是計數功能。當外部輸入信號由1至0跳變時,計數器加1。定時功能:若是對單片機內部的機器周期進行計數,從而得到定時,這就是定時功能。每個機器周期(等于12個晶體振蕩周期)計數器加1。定時功能和計數功能的設定和控制都是通過軟件來設定的。6.1定時器/計數器T0和T1的特性

具有以下特性:具有2種功能模式可供選擇具有4種工作方式可供選擇核心是一個16位寬的循環(huán)累加計數寄存器計數寄存器在SFR內統(tǒng)一編址用軟件方式可以隨時直接讀出或改寫計數寄存器的內容用軟件方式可以隨時控制累加計數的開啟和停止6.1定時器/計數器T0和T1的特性

具有以下特性:也可以用外接引腳信號控制累加計數過程的開啟或停止計數寄存器計滿溢出時,產生中斷標志位T1可用作異步串行接口UART的波特率發(fā)生器通過巧妙編程,還可用來實現輸入捕捉、輸出比較、脈寬調制等擴展功能。5.1定時器/計數器T0和T1的特性

5.3定時器/計數器電路結構T0、T1的內部結構框圖5.1定時器的結構及工作原理定時/計數器對輸入信號的要求外部計數脈沖的最高頻率為系統(tǒng)振蕩器頻率的1/24,例如選用12MHz頻率的晶體,則可輸入500KHz的外部脈沖。輸入信號的高、低電平至少要分別保持一個機器周期。 如圖所示,圖中Tcy為機器周期。與T0和T1模塊有關的SFR共有8個定時器控制寄存器TCON定時器方式寄存器TMOD中斷允許寄存器IE中斷優(yōu)先權管理寄存器IP累加計數器存器TH0+TL0、TH1+TL15.2T0和T1相關的寄存器

方式寄存器TMOD

GATE=1,T0、T1的啟動由INTi引腳和TRi位共同控制。只有INTi為高電平時,TRi置“1”才能啟動定時器/計數器。GATE=0,T0、T1由軟件設置TRi來控制啟動。TRi=1,啟動;TRi=0,停止。定時器/計數器的工作方式

TMOD用于控制T0和T1工作方式,低4位用于控制T0,高4位用于控制T1。M1M0:工作方式控制位,對應4種工作方式。C/T:定時器/計數器功能方式選擇位??刂萍拇嫫鱐CON

控制寄存器TCON

TCON用于控制定時器/計數器的啟、停、溢出標志和外部中斷信號觸發(fā)方式。TFi:T0、T1溢出位。當計數溢出時,由硬件自動使TFi置1,并向CPU申請中斷。進入中斷服務程序后,TFi又被硬件自動清0。TFi也可作為程序查詢的標志位,在查詢方式下由軟件清0。TRi:T0、T1運行控制位。TRi=1啟動計數,TRi=0,停止工作。5.4定時器/計數器的工作方式及應用每一種工作方式對應最大計數值:

方式0 13位計數器213=8192

方式1 16位計數器 216=65536

方式2 8位計數器 28=256

方式3 8位計數器 28=256T0優(yōu)于T1的方面:多一種工作方式T1優(yōu)于T0的方面:可以作為串口的波特率發(fā)生器MCS-51的定時器T0有4種工作方式: 即:方式0,方式1,方式2,方式3。MCS-51的定時器T1有3種工作方式: 即:方式0,方式1,方式2。5.3定時器的工作方式5.3.2方式1

M1、M0=01,為16位的計數器,除位數外,其他與方式0相同。其定時時間為:

(216-初值)×振蕩周期×12

例如:若晶振頻率為12MHz,則最長的定時時間為

(216-0)×(1/12)×12us=65.536ms5.3定時器的工作方式——方式15.3.3方式2

M1、M0=10,為自動恢復初值的8位計數器,等效框圖如下:TLx作為8位計數器,THx作為重置初值的緩沖器。5.3定時器的工作方式——方式2

THx作為常數緩沖器,當TLx計數溢出時,在置“1”溢出標志TFx的同時,還自動的將THx中的初值送至TLx,使TLx從初值開始重新計數。定時器/計數器的方式2工作過程如圖(x=0,1)。優(yōu)點:

方式0和方式1用于循環(huán)重復定時或計數時,在每次計數器擠滿溢出后,計數器復0。若要進行新一輪的計數,就得重新裝入計數初值。這樣一來不僅造成編程麻煩,而且影響定時精度。而方式2具有初值自動裝入的功能,避免了這個缺點,可實現精確的定時。缺點: 只有8位計數器,定時時間短、計數范圍小。其定時時間為:

(28-初值)×振蕩周期×12若晶振頻率為12MHz,則最長的定時時間為(28-0)×(1/12)×12us=0.256ms5.3定時器的工作方式——方式2方式2工作過程圖

(x=0,1)。5.3.4方式3

只適用于定時器/計數器T0。T1不能工作在方式3。 如果將T1置為方式3,則相當于TR1=0,停止計數(此時T1可用來作串行口波特率產生器)。1.工作方式3下的T0

T0在方式3時被拆成兩個獨立的8位計數器:TH0和TL0。

8位計數器TL0使用T0的狀態(tài)控制位C/T*、GATE、TR0、INT0,它既可以工作在定時方式,也可以工作在計數方式。8位定時器TH0被固定為一個8位定時器(不能作外部計數模式),并使用定時器T1的狀態(tài)控制位TR1,同時占用定時器T1的中斷請求源TF1。此時,定時器TH0的啟動或停止只受TR1控制。

TR1=1時,啟動TH0的計數;TR1=0時,停止TH0的計數5.3定時器的工作方式——方式32.T0工作在方式3下T1的各種工作方式注意:當T0處于方式3時,T1仍可設置為方式0、方式1和方式2。當時由于TR1、TF1和T1的中斷源都已被定時器T0(中的TH0)占用,所以定時器T1僅有控制位C/T來決定其工作在定時方式或計數方式。當計數器計滿溢出時,不能置位“TF1”,而只能將輸出送往串口。所以,此時定時器T1一般用作串口的波特率發(fā)生器,或不需要中斷的場合。

(1)T1工作在方式05.3定時器的工作方式第5章定時器/計數器及其應用5.4定時器的編程和應用5.4定時器的編程和應用編程說明MCS-51單片機的定時器是可編程的,但在進行定時或計數之前要對程序進行初始化,具體步驟如下:(1)確定工作方式字:對TMOD寄存器正確賦值;(2)確定定時初值:計算初值,直接將初值寫入寄存器的TH0、TL0或TH1、TL1; 初值計算:設計數器的最大值為M,則置入的初值X為: 計數方式:X=M-計數值 定時方式:由(M-X)T=定時值,得X=M-定時值/T T為計數周期,是單片機的機器周期。 (模式0M為213,模式1M為216,模式2和3M為28)(3)根據需要,對IE置初值,開放定時器中斷;(4)啟動定時/計數器,對TCON寄存器中的TR0或TR1置位,置位以后,計數器即按規(guī)定的工作模式和初值進行計數或開始定時。定時初值:

對機器周期進行計數。T:定時時間,X:初值,N:計數器位數,fosc:系統(tǒng)時鐘頻率,則:(2N-X)×12/fosc=TX=2N-fosc/12×T計數初值:

對外部脈沖進行計數,計數值根據要求確定。N:計數器位數,X:初值,則:

X=2N-計數值5.4定時器的編程和應用

例5-1

要在P1.0上輸出一個周期為2ms的方波,假設系統(tǒng)振蕩頻率采用12MHz。

利用T0方式0產生1ms的定時

方波的周期用T0來確定,讓T0每隔1ms計數溢出1次,即TF0=1;查詢到TF0=1則CPU對P1.0取反。即要使P1.0每隔1ms取反一次。5.4定時器/計數器的工作方式及應用每一種工作方式對應最大計數值:

方式0 13位計數器213=8192

方式1 16位計數器 216=65536

方式2 8位計數器 28=256

方式3 8位計數器 28=256T0優(yōu)于T1的方面:多一種工作方式T1優(yōu)于T0的方面:可以作為串口的波特率發(fā)生器5.4定時器的編程和應用第一步:確定工作方式字 方式0(13位)最長可定時8.192ms;

方式1(16位)最長可定時65.536ms;

方式2(8位)最長可定時256s。T0為方式0,M1M0=00定時工作狀態(tài),C/T=0GATE=0,不受INT0控制,T1不用全部取“0”值。故TMOD=00H5.4定時器的編程和應用第二步:計算1ms定時的初值X

設初值為X,則有: (213-X)×12×10-6×1/12=1×10-3

可求得:X=8192-1000=7192 X化為16進制,即X=1C18H=1,1100,000

1,1000B。 所以,T0的初值為:

TH0=E0HTL0=18HTH011100000TL0×

×

×

11000第三步:程序設計

采用查詢TF0的狀態(tài)來控制P1.0的輸出,同時要重新裝入初值。5.4定時器的編程和應用

參考程序:

ORG 0100HMAIN: MOV TMOD,#00H ;設置T0為方式0 MOV TL0, #18H ;送計數初值

MOV TH0, #0E0H ;送計數初值

SETB TR0 ;啟動T0LOOP: JBC TF0, NEXT;查詢定時時間到,轉NEXT,同時清TF0

SJMP LOOP ;重復循環(huán)NEXT:

MOV TL0,#18H

;T0重置初值

MOV TH0,#0E0H;T0重置初值

CPL P1.0

;P1.0的狀態(tài)取反

SJMP LOOP ;重復循環(huán)

END改為中斷方式(程序現編)ORG0000HLJMPmainORG000BHLJMPNEXTORG 0100HMAIN: MOV TMOD,#00H ;設置T0為方式0 MOV TL0, #18H ;送計數初值

MOV TH0, #0E0H ;送計數初值

SETBET0SETBEA SETB TR0 ;啟動T0SJMP$NEXT:

MOV TL0,#18H

;T0重置初值

MOV TH0,#0E0H;T0重置初值

CPL P1.0

;P1.0的狀態(tài)取反

RETI ;重復循環(huán)

ENDGATE門可使定時器Tx(T0或T1)的啟動計數受INTx*的控制,可測量引腳INTx*(P3.2或P3.3)上正脈沖的寬度(機器周期數)。以T1為例:門控制位GATE的應用—測量脈沖寬度回顧當GATE=1時,K=TRx·INTxK利用GATE測試外部輸入脈沖寬度

GATE=0時,定時器的啟動只受TRi位控制。GATE=1時,定時器的啟動將受TRi位和外部中斷信號INTi的共同控制。只有當INTi=1,同時TRi=1時才能啟動計數;INTi=0時停止計數。換一個角度看,當GATE=1時,定時器實際記錄的時間就是相應INTi引腳上高電平的持續(xù)時間。通過反相器,則可測得相應INTi引腳上低電平的持續(xù)時間。二個時間的和即為INTi引腳上輸入波形的周期,其倒數即為INTi引腳上輸入波形的頻率。還可算出占空比等參數。測試原理:以T0為例

GATE=1TR0=1例5-4利用T1門控位GATE測試INT1*(P3.3)引腳上出現的

溫馨提示

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

評論

0/150

提交評論