欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4301|回復: 0
打印 上一主題 下一主題
收起左側

單片機定時器/計數器原理和相關寄存器位的定義

[復制鏈接]
跳轉到指定樓層
樓主
ID:104835 發表于 2016-2-4 04:11 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

相關工具:單片機延時設計工具(計數器初值計算)
80C51單片機內部設有兩個16位的可編程定時器/計數器。可編程的意思是指其功能(如工作方式、定時時間、量程、啟動方式等)均可由指令來確定和改變。在定時器/計數器中除了有兩個16位的計數器之外,還有兩個特殊功能寄存器(控制寄存器和方式寄存器)。


從上面定時器/計數器的結構圖中我們可以看出,16位的定時/計數器分別由兩個8位專用寄存器組成,即:T0由TH0和TL0構成;T1由TH1和TL1 構成。其訪問地址依次為8AH-8DH。每個寄存器均可單獨訪問。這些寄存器是用于存放定時或計數初值的。此外,其內部還有一個8位的定時器方式寄存器 TMOD和一個8位的定時控制寄存器TCON。這些寄存器之間是通過內部總線和控制邏輯電路連接起來的。TMOD主要是用于選定定時器的工作方式; TCON主要是用于控制定時器的啟動停止,此外TCON還可以保存T0、T1的溢出和中斷標志。當定時器工作在計數方式時,外部事件通過引腳T0 (P3.4)和T1(P3.5)輸入。
定時計數器的原理:
當定時器/計數器為定時工作方式時,計數器的加1信號由振蕩器的12分頻信號產生,即每過一個機器周期,計數器加1,直至計滿溢出為止。顯然,定時器的定時時間與系統的振蕩頻率有關。因一個機器周期等于12個振蕩周期,所以計數頻率fcount=1/12osc。如果晶振為12MHz,則計數周期為:
T=1/(12×106)Hz×1/12=1μs
這是最短的定時周期。若要延長定時時間,則需要改變定時器的初值,并要適當選擇定時器的長度(如8位、13位、16位等)。
當定時器/計數器為計數工作方式時,通過引腳T0和T1對外部信號計數,外部脈沖的下降沿將觸發計數。計數器在每個機器周期的S5P2期間采樣引腳輸入電 平。若一個機器周期采樣值為1,下一個機器周期采樣值為0,則計數器加1。此后的機器周期S3P1期間,新的計數值裝入計數器。所以檢測一個由1至0的跳 變需要兩個機器周期,故外部事年的最高計數頻率為振蕩頻率的1/24。例如,如果選用12MHz晶振,則最高計數頻率為0.5MHz。雖然對外部輸入信號 的占空比無特殊要求,但為了確保某給定電平在變化前至少被采樣一次,外部計數脈沖的高電平與低電平保持時間均需在一個機器周期以上。
當CPU用軟件給定時器設置了某種工作方式之后,定時器就會按設定的工作方式獨立運行,不再占用CPU的操作時間,除非定時器計滿溢出,才可能中斷CPU 當前操作。CPU也可以重新設置定時器工作方式,以改變定時器的操作。由此可見,定時器是單片機中效率高而且工作靈活的部件。
綜上所述,我們已知定時器/計數器是一種可編程部件,所以在定時器/計數器開始工作之前,CPU必須將一些命令(稱為控制字)寫入定時/計數器。將控制字寫入定時/計數器的過程叫定時器/計數器初始化。在初始化過程中,要將工作方式控制字寫入方式寄存器,工作狀態字(或相關位)寫入控制寄存器,賦定時/計 數初值。下面我們就提出的控制字的格式及各位的主要功能與大家詳細的講解。
控制寄存器 定時器/計數器T0和T1有2個控制寄存器-TMOD和TCON,它們分別用來設置各個定時器/計數器的工作方式,選擇定時或計數功能,控制啟動運行,以及作為運行狀態的標志等。其中,TCON寄存器中另有4位用于中斷系統。
TMOD定時器/計數器方式寄存器單片機TMOD自動設計工具
定時器方式控制寄存器TMOD在特殊功能寄存器中,字節地址為89H,無位地址。TMOD的格式如下圖所示。



由圖可見,TMOD的高4位用于T1,低4使用于T0,4種符號的含義如下:
GATE:門控制位。GATE和軟件控制位TR、外部引腳信號INT的狀態,共同控制定時器/計數器的打開或關閉。
C/T:定時器/計數器選擇位。C/T=1,為計數器方式;C/T=0,為定時器方式。
M1M0:工作方式選擇位,定時器/計數器的4種工作方式由M1M0設定。

M1M0工作方式功能描述
00 工作方式013位計數器
01工作方式116位計數器
10工作方式2自動再裝入8位計數器
11 工作方式3定時器0:分成兩個8位計數器;
定時器1:停止計數
定時器/計數器方式控制寄存器TMOD不能進行位尋址,只能用字節傳送指令設置定時器工作方式,低半字節定義為定時器0,高半字節定義為定時器1。復位時,TMOD所有位均為0。
例:設定定時器1為定時工作方式,要求軟件啟動定時器1按方式2工作。定時器0為計數方式,要求由軟件啟動定時器0,按方式1工作。
我們怎么來實現這個要求呢?
大家先看上面TMOD寄存器各位的分布圖
第一個問題:控制定時器1工作在定時方式或計數方式是哪個位?通過前面的學習,我們已知道,C/T位(D6)是定時或計數功能選擇位,當C/T=0時定時/計數器就為定時工作方式。所以要使定時/計數器1工作在定時器方式就必需使D6為0。
第二個問題:設定定時器1按方式2工作。上表中可以看出,要使定時/計數器1工作在方式2,M0(D4) M1(D5)的值必須是1 0。
第三個問題:設定定時器0為計數方式。與第一個問題一樣,定時/計數器0的工作方式選擇位也是C/T(D2),當C/T=1時,就工作在計數器方式。
第四個問題:由軟件啟動定時器0,前面已講過,當門控位GATE=0時,定時/計數器的啟停就由軟件控制。
第五個問題:設定定時/計數器工作在方式1,使定時/計數器0工作在方式1,M0(D0) M1(D1)的值必須是0 1。
從上面的分析我們可以知道,只要將TMOD的各位,按規定的要求設置好后,定時器/計靈敏器就會按我們預定的要求工作。我們分析的這個例子最后各位的情況如下:
D7 D6 D5 D4 D3 D2 D1 D0
0 0 1 0 0 1 0 1
二進制數00100101=十六進制數25H。所以執行MOV TMOD,#25H這條指令就可以實現上述要求。
TCON定時器/計數器控制寄存器TCON在特殊功能寄存器中,字節地址為88H,位地址(由低位到高位)為88H一8FH,由于有位地址,十分便于進行位操作。
TCON的作用是控制定時器的啟、停,標志定時器溢出和中斷情況。
TCON的格式如下圖所示。其中,TFl,TRl,TF0和TR0位用于定時器/計數器;IEl,ITl,IE0和IT0位用于中斷系統。


各位定義如下:
TF1:定時器1溢出標志位。當字時器1計滿溢出時,由硬件使TF1置“1”,并且申請中斷。進入中斷服務程序后,由硬件自動清“0”,在查詢方式下用軟件清“0”。
TR1:定時器1運行控制位。由軟件清“0”關閉定時器1。當GATE=1,且INT1為高電平時,TR1置“1”啟動定時器1;當GATE=0,TR1置“1”啟動定時器1。
TF0:定時器0溢出標志。其功能及操作情況同TF1。
TR0:定時器0運行控制位。其功能及操作情況同TR1。
IE1:外部中斷1請求標志。
IT1:外部中斷1觸發方式選擇位。
IE0:外部中斷0請求標志。
IT0:外部中斷0觸發方式選擇位。
TCON中低4位與中斷有關,我們將在下節課講中斷時再給予講解。由于TCON是可以位尋址的,因而如果只清溢出或啟動定時器工作,可以用位操作命令。例 如:執行“CLR TF0”后則清定時器0的溢出;執行“SETB TR1”后可啟動定時器1開始工作(當然前面還要設置方式定)。
定時器/計數器的初始化由于定時器/計數器的功能是由軟件編程確定的,所以一般在使用定時/計數器前都要對其進行初始化,使其按設定的功能工作。初始貨的步驟一般如下:
1、確定工作方式(即對TMOD賦值);
2、預置定時或計數的初值(可直接將初值寫入TH0、TL0或TH1、TL1);
3、根據需要開放定時器/計數器的中斷(直接對IE位賦值);
4、啟動定時器/計數器(若已規定用軟件啟動,則可把TR0或TR1置“1”;若已規定由外中斷引腳電平啟動,則需給外引腳步加啟動電平。當實現了啟動要求后,定時器即按規定的工作方式和初值開始計數或定時)。
下面介紹一下確定時時/計數器初值的具體方法。
因為在不同工作方式下計數器位數不同,因而最大計數值也不同。
現假設最大計數值為M,那么各方式下的
最大值M值如下:
方式0:M=213=8 192
方式1:M=216=65 536
方式2:M=28=256
方式3:定時器0分成兩個8位計數器,所以兩個M均為256。
因為定時器/計數器是作“加1”計數,并在計數滿溢出時產生中斷,因此初值X可以這樣計算:
X=M-計數值
下面舉例說明初值的確定方法。
例1、選擇T1方式0用于定時,在P1.1輸出周期為1ms方波,晶振fosc=6MHz。
解:根據題意,只要使P1.1每隔500us取反一次即可得到1ms的方波,因而T1的定時時間為500us,因定時時間不長,取方式0即可。則M1 M0=0;因是定時器方式,所以C/T=0;在此用軟件啟動T1,所以GATE=0。T0不用,方式字可任意設置,只要不使其進入方式3即可,一般取0, 故TMOD=00H。系統復位后TMOD為0,可不對TMOD重新清0。
下面計算500us定時T1初始值:
機器周期T=12/fosc=12/(6×106)Hz=2μs
設初值為X,則:
(1013-X)×2×10-6s=500×10-6s
X=7942D=1111100000110B=1F06H
因為在作13位計數器用時,TL1的高3位未用,應填寫0,TH1占用高8位,所以X的實際填寫應為:
X=111100000000110B=F806H
結果:TH1=F8H,TL1=06H
源程序如下:
ORG 2000H
MOV TL1,#06H ;給TL1置初值
MOV TH1,#0F8H ;給TH1置初值
SETB TR1 ;啟動T1
LP1:JBC TF1,LP2 ;查詢計數溢出否?
AJMP LP1
LP2:MOV TL1,#06H ;重新設置計數初值
MOV TH1,#0F8H
CPL P1.1 ;輸出取反
AJMP LP1 ;重復循環

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表