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樓:亂七胡說八糟亂想
咦!?又來了!?昨天不早回了嗎!?
設晶振頻率為6MHZ,試用T0為外部計數器,程式設計實現每當記到脈衝,使T1開始2ms定時
解 t0方式0作計數器,計數初值a0 2 13 1000 7192d 1c18h th0 1ch,tl0 18h 機器週期 t 12 fosc 12 6x10 6 2x10 6s 2 s 2ms週期對應的計數滿值 2000 s 2 s 1000 t1方式1作2ms定時器,計數初值a1 2 16 10...
微控制器晶振為6mhz編寫100ms延時程式
胖大海君 嘿嘿 先給你改個錯誤 在使用6mhz晶振時,1個機器週期為1us,是不對的。51微控制器在使用6mhz晶振時 1個機器週期 12 6mhz 2us 可以編寫100ms延時子程式 呼叫子程式ys100ms 就可以延時100ms ys100ms mov r7,100 l1 mov r6,250...
當80C51微控制器晶振頻率為12MHz時,時鐘週期 機器週期各是多少
111111前的 當80c51微控制器晶振頻率為12mhz時,時鐘週期為 1 12 微秒,機械週期為1微秒。時鐘週期 一個時鐘脈衝所需要的時間。在計算機組成原理中又叫t週期或節拍脈衝。是cpu和其他微控制器的基本時間單位。它可以表示為時鐘晶振頻率 1秒鐘的時鐘脈衝數 的倒數 也就是1s 時鐘脈衝數,...