㈠ 單片機定時器 計數器的工作原理,及如何實現定時 計數功能
原理: 16位的定時器/計數器實質上就是一個加1計數器,其控制電路受軟體控制、切換。 當定時器/計數器為定時工作方式時,計數器的加1信號由振盪器的12分頻信號產生,即每過一個機器周期,計數器加1,直至計滿溢出為止。
顯然,定時器的定時時間與系統的振盪頻率有關。因一個機器周期等於12個振盪周期,所以計數頻率fcount=1/12osc。
兩個位元組最大數據為65536(十進制),或者0FFFFH(十六進制)
高位元組為TH0=(65536-X)/256,就是除以256後的整數部分;
低位元組為TL0=(65536-X)%256,減去高位元組後餘下的部分;
定時/計數器
定時/計數器T0和T1分別是由兩個8位的專用寄存器組成,即定時/計數器T0由TH0和TL0組成,T1由TH1和TL1組成。此外,其內部還有2個8位的特殊功能寄存器TMOD和TCON,TMOD負責控制和確定T0和T1的功能和工作模式,TCON用來控制T0和T1啟動或停止計數,同時包含定時/計數器的狀態。
以上內容參考:網路-定時器中斷
㈡ MSP430定時器怎麼配置,計數初值怎麼計算
你要先選擇定時器的時鍾源,選擇分頻系數
430的定時器是沒有初始值的,它和51的原理不同,51是要初始值的。430要先配置計數模式,然後根據計數模式來配置比較值,它的原理就是當你設置的值(寫到CCRx中的值)和計數核TAR的值相等,430就會產生一系列動作,比如才產生相等信號,中斷信號,輸出信號等。
㈢ 定時器/計數器初值設置方法
1機器周期=12(51系列為12時鍾周期,有的改進型單片機是1時鍾周期)×時鍾周期=12(1)×(1/晶振頻率M)=1us(1/12us,如採用12M晶體)。
以定時50ms為例
如果定時器在方式1工作,是16位計數器,最大值為65536(216),也就是能進行最大65536次計數。而50ms定時操作需要50000個機器周期,1個機器周期=1us,所以需要50000次計數操作。
為了計數器定時器工作,需要預先填充定時器初值(初值=定時器計數最大計數次數-所需定時計數次數)。所以需設置定時器初值15536=65536-50000,即3CB0H(10進制15536轉換成16進制數3CB0),所以TH0=0x3c,TL0=0xb0,高位就是TH0的值,低位為TL0的值。
如果使用11.0592MHZ的晶振,其他條件不變,11.0592M的晶振每秒可產生0.9216M個機器周期,50ms就需要46080個機器周期。定時器在方式1工作,是16位計數器,最大值為65536,所以需設置初值19456=65536-46080,即4C00H,所以TH0=0x4c,TL0=0x00。
由上面的分析,我們可以得出推導16位定時器/計數器初值設定高8位TH0,低TL0的公式為:
TH0=(65536-所需計數次數)/256=初值/256;
TL0=(65536-所需技術次數)%256=初值%256;
㈣ 單片機定時器、計數器怎樣使用
工作方式0:13位方式由tl的低5位和th的8位構成13位計數器(tl1的高3位無效)。你說的例子應該是:
假設t=1111
1111
1100
1101
那麼th1=1111
1111
tl1=1100
1101
t=1111
1111
0
1101
(tl的高三位110無效去掉)
定時計數器按系統時鍾(c8051f)或系統時鍾的12分頻(8051)計數的時候是數數再跟你寫的t值比較,如果一樣了,看是不是要中斷或其它操作,不是t值進位,你理解有問題。
這種工作方式很少要,一般用方式一代替了。16進制好用。
㈤ 51單片機的定時器是怎麼設置的
單片機定時器的設置步驟為:
1、設置定時器的工作模式,共4種工作方式,兩種模式(計數器/定時器)。比如:
MOV TMOD,#01;設置定時器0位定時器模式,工作方式1
2、根據定時時間賦初值。比如定時10毫秒,那麼如果12M晶振的話是10000個機器周期。定時器是溢出申請中斷,所以用溢出值減去定時周期為初值。
MOV TH0,#HIGH(65536-10000)
MOV TL0,#LOW(65536-10000)
3、開啟中斷、定時器。
SETB ET0
SETB EA
SETB TR0
㈥ 怎樣用MSP430中的定時器A作一個計數器
MSP430單片機是擁有多個定時器的,根據具體型號的不同,還分別具有基本定時器、定時器A、定時器B。
(1)看門狗定時器,它是個十六位的定時器,既可以作為看門狗使用,也可以作為定時器使用。一般各個型號的MSP單片機都有,主要用來處理程序跑飛的問題。
(2)基本定時器,一般出現在msp430x3和msp430x4系列處理器裡面。通過對SMCLK或者ACLK進行分頻,向其他外圍模塊提供低頻控制信號。還可以用於產生周期性中斷,來更新lcd或者啟動下一個新的測量周期。該基本定時器可以作為一個16位的定時器,也可以分成兩個8位的定時器。
(3)16位定時器A,一般FLASH型430都有TIMER_A,包含多路比較捕獲通道。具體可用於:產生定時脈沖或者PWM信號,雖然沒有自動重載功能,但是也沒有軟體誤差(這是個關鍵問題,需要認真考慮);捕獲外部事件的發生時間;用於串列通信。
(4)定時器B,在TIMER_A的基礎上,增加了比較鎖存器功能。
㈦ 單片機匯編語言問題:同時啟動T0,T1。一個工作在定時器模式,一個工作在計數器模式,TOMD該如何設置啊
那麼 TMOD=0101 0001 =51h;就是T1方式1計數器模式,T0方式1定時器模式
mov TMOD,#51
㈧ 51單片機定時器的計數器功能的使用
計數器1,也是計數,設置初值也是為了計數,是對外部脈沖計數,而這外部脈沖是要從P3.5輸入的。初值也是計數的需要,TL1=256-實際計數值=6,可以算出實際計數值是250。也就是需要對外部脈沖計250個才中斷一次。
你在外部加脈沖,是只加一個吧,所以,屏幕上沒有顯示,至少要加250個以上,每加250個,cou才加一個數。
㈨ 51單片機定時器用作計數時如何使用,說具體點,中斷中都需要干什麼。
首先設置定時器工作方式,給計數器賦初值,然後開總中斷,開定時/計數器中斷,啟動定時器,然後你該幹嘛幹嘛,沒嘛干就死循環等待中斷。在中斷里你想幹嘛幹嘛,但是不能有返回值。下面一C語言為例說明:
#include<reg51.h>
void main()
{
TMOD=0x06;//T0為計數器,工作方式2;
TH0=0x9c; //計數100次中斷
TL0=0x9c;
EA=1; //開總中斷
ET0=1; //開計數器中斷
TR0=1; //啟動計數器
while(1)//死循環,等待中斷,如果程序有別的事要做就做別的事,計數滿後自動跳到中斷服務程序
{
;
}
}
void time0() interrupt 1
{
//你隨便在這里幹嘛,等到記完100次程序就自動跳到了這里。
}
㈩ 如何將定時器0設定為方式1計數器模式並啟動
將定時器0設定為方式1計數器模式並啟動代碼為:
TMOD=0x01;
TR0=1;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
ET0=1;
EA=1;