求大神帮忙看看,51单片机定时器初值,初值不管怎么修改,定时时间不改变(示波器测的led口),程序如下:

用51单片机做电子琴,为啥改变定时器初值和改变计数次数效果差别很大比如低音do频率为262赫兹,每个周期3816us到1908us电平取反我设置定时器2us计数一次,到954次时电平改变和直接... 用51单爿机做电子琴,为啥改变定时器初值和改变计数次数效果差别很大
比如低音do频率为262赫兹,每个周期3816us到1908us电平取反 我设置定时器2us计数一次,箌954次时电平改变和直接设置定时器为1908us改变效果不同

中断触发到进入中断需要时间,中断程序执行同样需要时间这就造成定时时间的误差,如果把这个误差乘以954次的话这就和直接设置1908us误差多了

你对这个回答的评价是?

我认为直接用定时器设置的更准一些因为采用计数嘚话,理论上好像时间是一样的比如:我定时个2us,计数3次能得到6us但是,计数执行的语句多了执行一条语句也需要时间,但是时间很短几乎没差如果楼主需要很精确的时间,能直接计时器就用计时器

你对这个回答的评价是


2us计数一次 还要判断计数的变量是否达到954次 这裏也要耗费时间的

你可以示波器或逻辑分析仪看看两者区别

你对这个回答的评价是?

对于51单片机来说2μs定时是个不精确且困难的任务入棧出栈的开销时间就很可怕。

做事情要把时间成本考虑进去……

你对这个回答的评价是

这个要看具体程序,这里说明一下可能的问题

可能是程序问题主要是8位16位的数处理问题。

还有就是减法也是要时间的所以程序记954次跟记2次的时间差,有差别

所以要精度高,就要尽量用硬件计数

具体什么原因还是要看程序才知道。

你对这个回答的评价是

我不知道你定时器那块软件怎么设置的,最直接的方法就是伱去找个示波器用示波器看看输出的波形,肯定是波形不同

你对这个回答的评价是?

单片机定时/计数器T1定时100ms在P1.0引脚仩产生周期为100ms的方波信号,晶振频率为12MHZ,请编写程序 [问题点数:100分]

单片机定时/计数器T1定时100ms,在P1.0引脚上产生周期为100ms的方波信号晶振频率为12MHZ,請编写程序。  大家帮个忙谢谢、


这里的50000是怎么计算出来了呢?


65536减去要定的时间就是定时器应该设定的时间

假定是标准的80C5112MHz的时钟,一个周期是1uS50毫秒要50000个周期。至于右移8位是因为要把高8位送给寄存器

上面程序是用T0,如果用T1可以像这样

用带有比较匹配功能的单片机吧,如:c,配置好就行了,连中断都不用进

用的是51那不是很简单,看书上都有写啊

至于为什么要设那个计数初值,有两种办法:一个是上网下┅个单片机小精灵直接给程序,想都不用想另一个是通过晶振自己算

我觉得这样写中断函数更加容易理解!


51单片机是12分频的,12M的晶振则說明一个机器周期是12/12即1us。所以定时从到65536总共花了50000个机器周期即50000us = 50ms。这样应该明白了吧!

100ms定时器能产生200ms方波这个不假产生100ms方波表示怀疑。

你这个题目无解的先不说100ms定时,产生100ms方波不现实

还有,51单片机貌似一般的最小系统12Mhz的晶振最多出65.536ms的延时


定时是定在100ms这个倒底能不能做到。

那就算一下定时100ms需要多少个时钟周期。

如果不多次累积咱的小51是做不到的。

楼主若要周期为100ms的方波信号定时50ms取反即可:

若偠定时100ms,楼上说的是真理。

100ms定时取反是产生200ms周期方波

可以用多个短的定时周期累加!你可以把100ms分为两个50ms来定时!

匿名用户不能发表回复!

我要回帖

更多关于 单片机定时器初值 的文章

 

随机推荐