比如低音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,請编写程序。 大家帮个忙谢谢、
这里的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来定时!