51单片机用定时器计时应该如何计算?求大神支招
51单片机1个机器周期=12个时钟周期,频率为12MHZ,则一个机器周期为1US,具体到定时器程序就是,假如你想定1MS,那么单片机每次加一个一,就要过1US,那么1MS就要加1000次,所以用65535-1000=64535;再把64535换成16进制为FC17,把FC付给TH0,17给TLO,即可定时1MS,因为65535他就溢出进入中断。
嘿嘿 还是让俺来帮你解决吧
1 关于定时器定时时间的计算问题:
如果使用的是12M晶振计算,指令周期1uS,定时器是加1计数器,即是对内部时钟即指令周期脉冲计数 每当1uS到时,计数器加1。
假设 定时器的初始值=X,则每到1uS 计数器的值就加1 ,则计数器值=X+1+1+...+1 值越来越大,最后达到FFFFH+1 就会产生溢出 结果计数器值回0(FFFFH+1=65536)
可以推出 定时时间=计数的1的个数×1uS=(65536—X )1 uS
结论: 定时时间跟初始值即时间常数X有关。
如果要定时0.5毫秒=500uS 根据定时时间公式 500=(65536—X )
即X=(65536-500) 一般把高8位送TH0 即 (65536-500)/256
把 (65536-500)%256即除上256后的余数 即低8位数送给TL0
每当定时时间到 计数器值都回0 必须重新送时间常数X
2每条指令的时间怎么算? 答复:
可以查指令表 每一条指令的执行时间的周期数 都是固定的 如 NOP 为一个机器周期
MOV R6,#200; 为2个机器周期
机器周期=12/晶振频率 如果晶振频率=12MHZ 则机器周期=1 uS
就可以知道 ; 执行NOP指令的执行时间为 1 uS
执行MOV R6,#200指令的执行时间为 2 uS
因此 是可以精确计算出指令的延时时间的
呵呵 就介绍这些吧 满意就 给加分吧
因为51单片机的机器周期计算公式是12/晶振频率MHz,若晶振为12MHz,则机器周期就是12/(12×10^6)=1us,也就是说计数器没1us计数一次。
那么有了这个条件就好办多了,一般来说,12MHz晶振下,16位定时器满计数是65536次,每次1us,最大就能计时65.536ms,则65536减去多少就是定时多少,如(65536-X)/256,就是定时X微秒。
那么如果晶振不是12MHz,就要把上述的X乘以12/晶振,得到的值就是定时时长。原理相同。
有不懂的地方随时回复我。
希望我的回答能帮助到你。
当用定时器的方式1时,计算出的(65536-X)的值超过了256,也就是定时器的16位定时方式,这样需要给TH0送高8位,TL0送低位,所以,要计算出(65536-X)的高8位和低8位,(65536-X)/256就是计算出高8位,而(65536-X)%256就是计算出低8位,所以写成
TH0=(65536-X)/256(或者TH1)
TL0=(65536-X)%256(或者TL1)
现在有专门的软件计算了, 不用自己算, 象STC-ISP里面就有
单片机:定时器工作方式0、1、2下的计时时间计算方法?
首先明确三种方式的计数范围:方式0是13位的定时\/计数器,记满值为2^13=8192;方式1是16位的定时\/计数器,计满为2^16=65536;方式2是8位的定时\/计数器,计满为2^8=256。我以方式1来举例说明(12M晶振):如果我想计数1S,但是计数方式1的计数最大计数65536us即65ms,为了方便计数,选取50ms,...
51单片机定时器T1工作方式1怎么计算时间?
如果要实现一次50ms的定时,可以按照以下步骤进行计算:1. 计算每个计数周期的时间:12\/OSC 秒2. 计算需要多少个计数周期才能达到50ms:50ms \/ (12\/OSC) = 4166.673. 计算需要设置的初始值:65536 - 4167 = 61369因此,在使用51单片机定时器T1工作方式1实现一次50ms的定时任务时,其十进制初始值...
一个单片机 定时器 计算 问题
12M的晶振每秒可产生1M个机器周期,50ms就需要50000个机器周期,定时器在方式1工作,是16位计数器,最大值为65536,所以需设置初值15536,即3CB0H,所以TH0=0x3c,TL0=0xb0。11.0592M的晶振每秒可产生0.9216M个机器周期,50ms就需要46080个机器周期,定时器在方式1工作,是16位计数器,最大值为65...
单片机的定时器怎样计数
T1定时器工作模式1 为 16位定时器,定时计算公式为:t= (2^16-<TH1:TL1>)×机械周期 T,将T=1us,t=20ms 代入公式得:(65536-<TH1:TL1>)×1us=20ms,得:TH1:TL1=65536-20ms×1000us\/ms÷1us=45536=0xB1E0,得:TH1=0xB1,TL0=0xE0;定时器初始化函数:void TimerInit(){ TMOD...
单片机用定时器工作模式1知道频率10hz怎么算定时时间
单片机用定时器工作模式1知道频率10hz这么算定时时间:1、对于给定的定时器预分频系数和重载值,我们可以通过以下的公式来计算定时时间:```T=Tpre×(256-TCNT)\/Fosc```其中,T为定时时间,Tpre为预分频系数对应的时间,TCNT为定时器初值,Fosc为工作时钟频率。2、对于工作模式1,TCNT的初始值为(`...
单片机定时器定时的时间怎么算?
单片机的定时时间的计算公式=计数值(定时值)* 机器周期= 计数值(定时值)* 12 \/ 晶振频率。上面的两个等号是等价的,因为,单片机的机器周期=12秒\/晶振频率,因此两个公式通用。完成一个基本操作所需要的时间称为机器周期。一般,一个机器周期由 若干个S周期(状态周期)组成。80C51系列单片机一个...
关于单片机定时器的求算,怎么算出来的
51单片机定时器是“溢出”计时的,所以计算方法是:(假设定时X毫秒(这里设定在溢出范围内),晶振频率是F兆赫兹),那么计算公式是:初值=65536-(X*1000)*(F\/12)
单片机定时器计算?
计算定时器,最原始的公式是(65536-初值)*12\/晶振值=定时的时间,由此式子推出:初值=65536-(晶振值*定时时间\/12)。则TH0=初值\/256,TL0=初值%256,最终结果就是 TH0 = 255-CLOCK\/TIME_PER_SEC\/12\/256;TL0 = 255-CLOCK\/TIME_PER_SEC\/12%256;其中除以TIME_PER_SEC,是因为TIME_PER_SEC...
单片机中用定时器 和计数器来求频率 计算公式是怎么写的???
用定时器来及频率,你只需将定时器定时为1秒,1秒内的脉冲个数就是频率了。如果你一定要公式,非常简单,用计数器计到的脉冲个数除以定时时间就是频率了。其中定时器每计一次的时间是晶振的十二分之一,例如,12M晶振就是(12*10^6)*(1\/12)=1us....
单片机一秒是怎么计算得来的?
=(定时器最大值-初始值)。定时器最大值根据你使用的定时器位宽而定,一般51系列的只有16位,如果按每个机器周期为1us时计算的话,则定时器需要执行的次数大于了定时器的最大值,此时需要操作定时器进行多次中断进行累计,如可进行每10ms中断一次,连续执行100次后就达到了你所需要的1s的要求了。