標(biāo)題: 新手解惑:關(guān)于AT89C52單片機定時器T1/T2初值設(shè)置(THX、TLX) [打印本頁]

作者: yf15966844335    時間: 2018-11-5 09:33
標(biāo)題: 新手解惑:關(guān)于AT89C52單片機定時器T1/T2初值設(shè)置(THX、TLX)
新手解惑:關(guān)于AT89C52定時器T1/T2初值設(shè)置(THX、TLX)
    大家好,我是一名新手,正在學(xué)習(xí)中......(剛剛學(xué)習(xí)一月左右),以后的時間里,我將不定期更新論壇,用新手解惑的方式給自己督促學(xué)習(xí),給和我一樣的新手學(xué)習(xí)51提供好的方法,同時也需要單片機高手的指點。
    今天更新的是《新手解惑:關(guān)于AT89C52定時器T1/T2初值設(shè)置(THX、TLX)》,我在學(xué)習(xí)中發(fā)現(xiàn)了2個問題:1、如何計算處置。2、在定時器方式1中怎樣裝入計算好的初值(THX、TLX)。
    首先定時器中斷初始化的流程:1、設(shè)置TMOD(定時器方式選擇M1M0、門控制及定時器模式)。
                                                 2、計算初值裝入初值(THX、TLX)(方式一)
                                                 3、開啟“IE”中斷寄存器,中斷允許(EA、ETX)
                                                 4、啟動定時器允許位(TRX)

     以上是所有教材標(biāo)準(zhǔn)的流程,如果我們只是了解其過程的話,我就不會糾結(jié)初值的問題,有很多的資料都有你想要的裝入初值的方法,包括你需要的要求(時間、方式);但是你不去了解“初值”對以后的學(xué)習(xí)會造成一定的阻礙,使得自己在學(xué)習(xí)單片機過程基礎(chǔ)知識不扎實,好比“上數(shù)學(xué)課只是一低頭,后來的數(shù)學(xué)再也不會了”的這個梗。
    我先簡單說一下定時器在方式一中的工作流程,初始化完畢后,開始計時,TLx中開始計數(shù)(以每機器周期作用下),記滿后溢出至THx,THx溢出TFx標(biāo)志位置1(TFx無需操作硬件自動),開啟中斷,中斷完畢,結(jié)束中斷,返回中斷點,繼續(xù)主任務(wù)。
    現(xiàn)在開始說一下THx和TLx裝入初值的問題了,首先需要了解機器周期、震蕩周期的換算,震蕩周期=1/晶振頻率;機器周期=震蕩周期*12=1/晶振頻率*12;以晶振為12Mhz為例,1個機器周期=1/12*12=1微秒,而THX和TLX充滿需要多少次呢?這樣計算:一共是16位,二進制,換算后是一共2^16-1;這里就會有人問為什么要-1,我舉例說明,家里的時鐘走滿需要多少的數(shù),答案是11個(不計原點),所以寄存器充滿需要最高-1;這樣計算下計時器嘴最高能達(dá)到(2^16-1)*機器周期=65535*1微秒≈65.5ms, 如果需要50ms我們就需要50000個機器周期,20ms就需要20000個機器周期,初值就是余下的那部分?jǐn)?shù)值=總數(shù)值-需要的時間,
                                      以12MHZ晶振為例,需要50ms,我們來計算下初值:初值=總值-需要的時間
                                                                                                                 初值=65535-50000=15535
       如何裝入初值呢?以上為例,得出要裝入“15535”,把THX、TLX想成兩個桶,他們本身運行方式就是TL升到TH,15536轉(zhuǎn)換2進制0011110010110000、16進制為3CB0,把高的8位放在THx里,低8位放在TLx里,就是THx=0x3c;TLx=0xb0;這樣你在往里“放水”到溢出就是你需要的時間了,也就是50ms了。
      你也可以對“15536”進行求摸求余運算THx=15536/256;TLx=15536%256;原理是一樣的,只不過是一個是算好的,一個是需要軟件計算的。
    以上就是我對定時器的理解,可能有些我理解的定時器還有些不全面,但是對于初學(xué)者這些就夠了,還有些說的不對的地方,請高手指教!



作者: Y_G_G    時間: 2018-11-8 19:25
我用51寫幾還算能用的程序了,我竟然看不明白你說的定時器!!!我這不是白學(xué)了!!應(yīng)試教育呀!!


作者: yf15966844335    時間: 2019-1-6 22:42
Y_G_G 發(fā)表于 2018-11-8 19:25
我用51寫幾還算能用的程序了,我竟然看不明白你說的定時器!!!我這不是白學(xué)了!!應(yīng)試教育呀!!

沒看明白,是我理解的不對嗎?請指教。
作者: 零hjf    時間: 2019-1-7 02:33
定時器有T0和T1,其中T1只有三種計算方式(0.1.2),T0有四種(0.1.2.3),這個要注意區(qū)分
作者: wulin    時間: 2019-1-7 15:06
初值=65536-50000=15536=0x3CB0
作者: weidoit    時間: 2019-1-7 19:15
“單片機小精靈”V1.3
作者: 可以小帥    時間: 2019-3-18 10:51
yf15966844335 發(fā)表于 2019-1-6 22:42
沒看明白,是我理解的不對嗎?請指教。

他的意思是 他沒學(xué)好




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1