找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1453|回復(fù): 5
收起左側(cè)

單片機(jī)定時器時間計算

[復(fù)制鏈接]
ID:1041297 發(fā)表于 2022-9-6 10:13 | 顯示全部樓層 |閱讀模式
TH0 = (65536-1600)>>8;                                //63936---
TL0 = (65536-1600);        
每100us進(jìn)入中斷,請問這個1600是怎么計算的

回復(fù)

使用道具 舉報

ID:161164 發(fā)表于 2022-9-6 11:41 | 顯示全部樓層
你用的是16Mhz晶振
16Mhz * 0.0001s = 1600

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:624769 發(fā)表于 2022-9-6 12:46 | 顯示全部樓層
16MHz 晶振 1us = 16,   16x100 = 1600

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:1034262 發(fā)表于 2022-9-6 13:23 | 顯示全部樓層
估計樓主用的是STC的51,定時器0單周期計數(shù),主頻為16MHz,則100us就要1600個計數(shù),于是就是65536-1600.我一般用這樣的:
#define  Fosc   24000000UL

TH0 = (u8)((65536-Fosc/10000)>>8);    //定時10000Hz(100us)   
TL0 = (u8)(65536-Fosc/10000);   

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:1007932 發(fā)表于 2022-9-6 13:41 | 顯示全部樓層
定時器就是數(shù)輸入時鐘周期個數(shù),比如你這個,輸入時鐘為16MHz,周期即1/16 000 000(s),數(shù)1600個時鐘即1/10 000(s)=0.1(ms)=100(us)。(有的單片機(jī)還可以時鐘分頻,所以輸入時鐘不一定是晶振頻率)
THx和TLx是定時器高八位和低八位,可看成是兩個8位寄存器合成的16位寄存器,由于賦值默認(rèn)從低位取,所以高八位賦值時要右移8位,把原來高八位移到低八位再賦值給THx,是常見的數(shù)據(jù)拆分方法。

很基礎(chǔ)的東西了,多看看書!

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:123289 發(fā)表于 2022-9-7 10:45 | 顯示全部樓層
1600是定時器溢出前CLK的數(shù)量。
定時器是增量計時器,只會做+1。而它是16位的,即加到65536才溢出。
你要+1600次溢出,就要先給個底數(shù),這個底數(shù)就是:65536-1600
1600是你需要的時間,就是1600個CLK需要的時間,沙發(fā)給出的是CLK使用系統(tǒng)晶振的時間。如果CLK取自其它時鐘源,則要用其它時鐘作為時基計算。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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