找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 15793|回復: 5
打印 上一主題 下一主題
收起左側

單片機TH0 TL0的初值是怎么算的?定時的時間

[復制鏈接]
跳轉到指定樓層
樓主
ID:158886 發(fā)表于 2019-6-1 21:46 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
誰來講一下,TH0 TL0的初值是怎么算出來的,定時的時間
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

6#
ID:158886 發(fā)表于 2019-6-4 23:04 | 只看該作者
數(shù)學邏輯不好,有點懵,,2樓的3樓講的都不錯,看了之后明白了一點,總數(shù)減定時,的差,用16進制表示,再給TH TL,晶振不一樣是不是值也不一樣!
回復

使用道具 舉報

5#
ID:554573 發(fā)表于 2019-6-4 12:32 | 只看該作者
如果覺得計算麻煩可以網(wǎng)上搜初值計算器,有小程序的
回復

使用道具 舉報

地板
ID:123289 發(fā)表于 2019-6-4 10:16 | 只看該作者
很簡單:
定時器就是個加法器,每輸入一個CLK脈沖它的T0就+1(T0由TH0和TL0合成)。
要點是:當T0=1111111111111111(65535)后再來一個CLK,T0就變成0,且給出一個溢出信號。
就可以在得到這個溢出信號后,不讓它=0,而重新給它一個起點數(shù)字!
所以你只要知道CLK取的是什么信號,這個信號的間隔時間是多少就OK了,余下的是小學數(shù)學問題了。
CLK可以取晶振頻率、可以取晶振分頻后的頻率,可以取外部分IO上的脈沖,很靈活。這就看你如何設置選擇了。
你要學會看手冊,這些手冊上都有。
回復

使用道具 舉報

板凳
ID:155507 發(fā)表于 2019-6-2 09:52 | 只看該作者
TH0 TL0的初值
先說說總值:

方式1為16位的定時器/計數(shù)器,對定時器T0來說是分成兩個寄存器(可以形象地比作容器吧,請自行查閱):TH0為高八位,TL0為低八位,組成了16位的定時器,當?shù)臀籘L0計滿就向高位TH0移一個數(shù),然后清零。
以12Mhz的晶振來說,機器周期是1us,計滿TH0、TL0就需要2^16-1個數(shù),再來一個數(shù)就“溢出”產(chǎn)生中斷,一次溢出也就是65536us,約等于65.5ms,如果要定時50ms的話就要給他們裝一個預裝值(初值),總值-需要值=預裝值,
也就是65536-50000=15536,預裝后,定時器從預裝值開始加值,定時器溢出中斷后,會重新從預裝值開始加值加到50ms就再產(chǎn)生中斷,從而達到了定時的目的。如果要定時1s就可以讓定時器中斷1000ms/50ms=20次。
另外一點,TH0和TL0中應該裝入的總數(shù)是15536,然后把15536對256求模:15536/256=60裝入TH0中,把15536對256求余:15536%256=176裝入TL0中,因為這是兩個八位28*28的容器。
所以就有了
TH0=(65535-50000)/256
TL0=(65535-50000)%256



http://www.torrancerestoration.com/bbs/dpj-103111-1.html

http://www.torrancerestoration.com/bbs/dpj-105679-1.html


回復

使用道具 舉報

沙發(fā)
ID:94031 發(fā)表于 2019-6-2 09:18 | 只看該作者
以晶振12MHZ為例:
可以得到:
TMOD=0x01;
TL0=0xb0;
TH0=0x3c;

至于怎么來的請看:
12M晶振每秒可產(chǎn)生1M個機器周期,1M個機器周期就是1000000個機器周期。一個機器周期為1us, 50ms就需要50000個機器周期,定時器在方式1工作,為16位,最大值為65536,所以需設初值為65536-50000=15536;
15536轉化為16進制得3cb0;故高位TH0=0x3c;TL0=0xb0;

不同頻率晶振產(chǎn)生的機器周期不一樣:
公式為:機器周期=晶振頻率/12。。。這是在該晶振頻率下每秒產(chǎn)生多少M機器周期。

比如當晶振頻率為11.0592M的晶振。則每秒可產(chǎn)生機器周期為11.0592/12=0.9216M的機器周期,也就是921600個機器周期。50ms等于0.05秒,所以需要921600*0.05=46080個機器周期;定時器在方式1工作,為16位,最大值為65536,所以需設初值為65536-46080=19456;轉為16進制為(4c00),所以高位TH0=0x4c; TL0=0x00;
---------------------
作者:92年程序員
來源:CSDN
原文:https://blog.csdn.net/qq_39790474/article/details/85034038
版權聲明:本文為博主原創(chuàng)文章,轉載請附上博文鏈接!
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表