找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8078|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

新手解惑:關(guān)于AT89C52單片機(jī)定時(shí)器T1/T2初值設(shè)置(THX、TLX)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:418425 發(fā)表于 2018-11-5 09:33 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
新手解惑:關(guān)于AT89C52定時(shí)器T1/T2初值設(shè)置(THX、TLX)
    大家好,我是一名新手,正在學(xué)習(xí)中......(剛剛學(xué)習(xí)一月左右),以后的時(shí)間里,我將不定期更新論壇,用新手解惑的方式給自己督促學(xué)習(xí),給和我一樣的新手學(xué)習(xí)51提供好的方法,同時(shí)也需要單片機(jī)高手的指點(diǎn)。
    今天更新的是《新手解惑:關(guān)于AT89C52定時(shí)器T1/T2初值設(shè)置(THX、TLX)》,我在學(xué)習(xí)中發(fā)現(xiàn)了2個(gè)問題:1、如何計(jì)算處置。2、在定時(shí)器方式1中怎樣裝入計(jì)算好的初值(THX、TLX)。
    首先定時(shí)器中斷初始化的流程:1、設(shè)置TMOD(定時(shí)器方式選擇M1M0、門控制及定時(shí)器模式)。
                                                 2、計(jì)算初值裝入初值(THX、TLX)(方式一)
                                                 3、開啟“IE”中斷寄存器,中斷允許(EA、ETX)
                                                 4、啟動(dòng)定時(shí)器允許位(TRX)

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


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

使用道具 舉報(bào)

沙發(fā)
ID:401564 發(fā)表于 2018-11-8 19:25 | 只看該作者
我用51寫幾還算能用的程序了,我竟然看不明白你說的定時(shí)器!!!我這不是白學(xué)了!!應(yīng)試教育呀!!

回復(fù)

使用道具 舉報(bào)

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

沒看明白,是我理解的不對(duì)嗎?請指教。
回復(fù)

使用道具 舉報(bào)

地板
ID:463282 發(fā)表于 2019-1-7 02:33 | 只看該作者
定時(shí)器有T0和T1,其中T1只有三種計(jì)算方式(0.1.2),T0有四種(0.1.2.3),這個(gè)要注意區(qū)分
回復(fù)

使用道具 舉報(bào)

5#
ID:213173 發(fā)表于 2019-1-7 15:06 | 只看該作者
初值=65536-50000=15536=0x3CB0
回復(fù)

使用道具 舉報(bào)

6#
ID:149389 發(fā)表于 2019-1-7 19:15 | 只看該作者
“單片機(jī)小精靈”V1.3
回復(fù)

使用道具 舉報(bào)

7#
ID:489764 發(fā)表于 2019-3-18 10:51 | 只看該作者
yf15966844335 發(fā)表于 2019-1-6 22:42
沒看明白,是我理解的不對(duì)嗎?請指教。

他的意思是 他沒學(xué)好
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表