www.ysbm.net > 计算定时器的计数初值

计算定时器的计数初值

定时器是通过设定初值,然后单片机在你设定的初值上每个指令周期加1,直到溢出,设置溢出标志位,而计数是对某个IO口的脉冲进行计数.两者最关键区别是定时器的计数脉冲是单片机内部的,计数器的计数脉冲来自输入引脚.定时器的初值的计算如下:在定时器模式下,计数器的计数脉冲来自于晶振脉冲的12分频信号,即对机器周期进行计数.若选择12M晶振,则定时器的计数频率为1MHZ.假设定时时间为T,机器周期为T1,即12/晶振频率.X为定时器初值.则 X=2^n-T/T1.方式0,n=13,方式1时,n=16,方式2和方式3,n=8

定时中断初值计算方法是:1、确定定时时间化为微妙t.2、晶振频率以m为单位f.3、计算初值:s=65536-t*f/12 比如11.0592m晶振,定时10毫秒.t=10*1000=10000us f=11.0592 s=65536-10000*11.0592/12=65536-92164、给定时寄存器赋值.thn=s/256 tln=s%256

51系列单片的机器周期算法是(12/晶振)us,你使用12MHz晶振,那么机器周期就是12/12Hz=1us,那么定时器是16位 2^16=65536,65536-x,其中x代表你需要定时时长,若为50ms=50000us,就是65536-15536=50000,定时器计数50000次.每次1us,算出得50ms.不懂的地方可随时回复我.希望我的回答能帮助到你.

1机器周期=12(51系列为12时钟周期,有的改进型单片机是1时钟周期)*时钟周期=12(1)*(1/晶振频率M)=1us(1/12us,如采用12M晶体).以定时50ms为例 如果定时器在方式1工作,是16位计数器,最大值为65536(216),也就是能进行最大65536

tmod=0x01;//t0做定时器,工作模式选择模式1:16位定时器,无预分频 由于51单片机1个机器周期等于12个时钟周期.t=1/6mhz*12=2us,即一个机器周期是2us.没有预分频如果要定时10ms则需要10ms/2us=5000次计数.所以可求得初值 th0=(65535-5000)/256; tl0=(65535-5000)%256; 初值就上面这样写就可以了,因为这样看起定时多久来更明了点,当然你也可以求出来.

这是由定时器寄存器的位数决定的. (1)模式0 定时器寄存器配置为13 位寄存器,该13 位寄存器包含THn 全部8 个位及TLn 的低5 位,TLn 的高3 位不定可将其忽略.2的13次方是8192,所以模式0的模就是8192. (2)模式1 使用了THn 及TLn 全部16 位,2的16次方是65536,所以模式1的模就是65536. (3)模式2 8位的,所以模是256.

这个得知道定时器时钟周期.设预期定时时间为T,定时器时钟周期位t,定时值X=T/t.将X转换为十六进制数,取其补码,就是定时器初值.

呵呵 正确为你解答:1 可以按定时时间的计算公式, 计算出定时器的时间常数X: 定时时间T=(2的N次方-X)12/单片机晶振频率2 N为定时器的工作方式: 方式0时,N=13 方式1时,N=16 方式2时,N=83 根据定时时间和工作方式,计算出时间常数X 把X转换成二进制数,高8位送给TH1,低8位送给TL1,就可以启动定时器开始定时了. 例如: 工作在方式1,定时时间为1000微秒 晶振频率=12MHZ 则 定时时间T=(2的16次方-X)12/12MHZ=1000 解出 X=64536=FC18H 呵呵 如满意 请选择满意回答

在定时器模式下,计数器的计数脉冲来自于晶振脉冲的12分频信号,即对机器周期进行计数.若选择12M晶振,则定时器的计数频率为1MHZ.假设定时时间为T,机器周期为T1,即12/晶振频率.X为定时器初值.则 X=2^n-T/T1.方式0,n=13,方式1时,n=16,方式2和方式3,n=8

呵呵 帮你分析一下啊 定时时间2ms=(2的16次方-时间常数X)12/f 即晶振为12M f=12*10000002ms=(2的16次方-时间常数X)12/(12*1000000) 2*0.001=(2的16次方-时间常数X)12/(12*1000000) 2*0.001=(2的16次方-时间常数X)/(1000000) 2000=

友情链接:5213.net | zxqs.net | xmlt.net | jjdp.net | lzth.net | 网站地图

All rights reserved Powered by www.ysbm.net

copyright ©right 2010-2021。
www.ysbm.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com