51单片机各种位数定时器初值计算方法?

如题所述

对12MHz ,1个机器周期 1us ,12/fosc = 1us


方式0是13位定时器,最大时间间隔 = 2^13 = 8.192ms

方式1是16位定时器,最大时间间隔 = 2^16 = 65.536ms

方式2是8位定时器,最大时间间隔 = 2^8 = 0.256ms =256 us

方式3 仅适用于T0,此时T0分成两个8位计数器,T1停止计数

当选用定时器的方式1时,设机器周期为Tcy,定时器产生一次中断的时间为t,那么需要计数的个数N=t/Tcy,装入THX和TLX中的数分别为:

THX = (2^16 - N)/256 TLX = (2^16 -N )%256(此处的X为定时器0或定时器1)

公式为:(2^y - X)*Tcy = t

Tosc= 1/ fosc

一个机器周期 = 12个时钟周期 = 12/fosc

溢出速率 = 1 / 溢出时间
故:初值X = 2^y – t/Tcy

THX = 高八位
TLX = 低八位

注:

X:定时器初值

N:计数值

y:定时器工作方式

fosc:晶振频率

Tcy:机器周期,Tosc:时钟周期
Tcy = 1/Tosc
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-11-21
51单片机而言,定时器只有8位和16位两种,没达到“各种”那么多。而计算初值的方法是相同的,区别只是8位数是用256作基数,16位用65536作基数。根据晶振频率计算机周期,Tc=12/fosc,设定时的时间为Td,则初值X=基数-Td/Tc本回答被网友采纳
第2个回答  2019-11-23
各种位数,常用的是 16 位数。
8 位,也有一些用武之地。
13 位,基本没有用的了。
书上,都有例题。看书就行。
难倒,楼主对书,还有什么疑问吗?