如果晶振頻率為6MHz時,定時計數器在工作方式方式方式2下,其最大的定時時間為多少

2021-08-11 15:02:59 字數 1840 閱讀 4634

1樓:津人依夢

晶振頻率為6mhz時,定時/計數器在工作方式0、方式1、方式2下,其最大的定時時間分別為:

16.384 ms;131.072 ms;0.512 ms;

根據計算公式,x=m-計數初值=m-(fosc*t)/12,其中x是計數初值,要得到最大定時時間x=0;m最大計數值,工作方式0時m=2^13=8192,工作方式1時m=2^16=65535,工作方式2時m=2^8=256。fosc晶振頻率。

所以最大定時時間為:m-(fosc*t)/12=0,即t=12*m/(6*10^3)=2*10^(-3)*m

工作方式0 t=2*10^(-3)*8192=16.384 ms;

工作方式1 t=2*10^(-3)*65536=131.072 ms;

工作方式2 t=2*10^(-3)*256=0.512 ms;

定時/計數器在使用之前均需要進行初始化,寫入計數初值。

擴充套件資料

定時器工作流程:

定時器工作的流程可以按照這個順序(以51為例用定時器0方式一產生50毫秒的定時)

1、確定使用哪個定時器,使用哪種方式,這一步通過tmod設定,tmod的低四位是設定定時器0的,高四位是用來設定定時器1的,其中的m0,m1是用來設定定時器工作在哪種方式,gate一般用不要設定,c/t是選擇計數模式還是定時模式的,如:tmod = 0x01,就說明定時器0工作在方式1。

2、接下來就要設定定時的時間,用定時器定時50毫秒,可以用這種方式th0 = (65535 - 50000) / 256,tl0 = (65535 - 50000) % 256;可以這樣理解:因為這是定時器的初值,也就是說計數脈衝就是在這個數的基礎上向上遞增,到達65535後就溢位產生中斷。

3、第三步開啟中斷,使用ie暫存器,首先開啟總中斷ea = 1,這一步是所有中斷所必須的,然後開啟定時器0中斷,et0 =1。

4、這時準備工作結束,啟動定時器,使用tcon暫存器,tr0 = 1,實現了一個50毫秒的定時。

第一節 定時計數器的結構與工作原理

2樓:庹琰

最懶的方法,下一個‘微控制器小精靈‘,定時器、精確延時、串列埠波特率等等通通輕鬆搞定。

3樓:hi漫海

晶振頻率為6mhz,則振盪週期tosc=1/6 us。

工作方式0:此時為13位定時/計數器,則最大計數值為2的13次方(即8192)

工作方式1:為16位定時/計數器,則最大計數值為2的16次方(即65536)

工作方式2:為自動重灌初值的8位定時器/計數器,則最大計數值為2的8次方(即256)

由於定時器/計數器每加1佔用的時間為1個機器週期

因此各自最大定時時間如下:

工作方式0:最大定時時間 tm = 8192*mc

工作方式1:最大定時時間 tm = 65536*mc

工作方式2:最大定時時間 tm = 256*mc

其中mc為內部機器脈衝週期(即機器週期)

晶振為6mhz,如果按常規標準的12分頻的51系列微控制器算的話(mc = 12*tosc = 2微秒)。

則各自最大定時時間如下:

工作方式0:最大定時時間 tm = 8192*mc =16384 us

工作方式1:最大定時時間 tm = 65536*mc =131072 us

工作方式2:最大定時時間 tm = 256*mc = 512 us

其中mc為內部機器脈衝週期(即機器週期)。

4樓:亂七胡說八糟亂想

咦!?又來了!?昨天不早回了嗎!?

晶振頻率中 基頻和泛音的含義和區別?

我們常用的是石英晶體的厚度切變模式,也就是說晶體振盪頻率主要與晶元厚度有關係。晶體振盪的時候不是單一頻率,而是有諧波分量的,這個說法不一定準確,但是可以這樣理解。但是由於本身的性質,偶次諧波自身抵消掉了,所以反應出來的只有奇數次。比如基頻10m的晶體,起來以後,實際上還有30m,50m,70m等頻率...

stm32的工作頻率和晶振有什麼關係?8M的晶振,工作頻率是多少?還有自帶的ADC轉換是不

stm32f103系列晶元,最高工作頻率可以到72m,使用8m的外部晶振,一般還需要使用內部的pll鎖相環進行倍頻,相比於內部的8m的rc stm32工作頻率是由晶振倍頻來的,以stm32f103vbt6為例,晶振是8m,設定pll倍頻為9的話,工作頻率為72m,一般adc電壓不超過vcc 如果超過...

51微控制器教程採用6Mhz晶振,採用定時方式1,定時時間為 40毫秒計算出初始值

th b1.tl e0,十六進位制 include void inittimer0 void void main void void timer0interrupt void interrupt 1 org 0000h ljmp start org 000bh ljmp timer0interrup...