kele26 发表于 2013-3-12 20:21:44

初学者请教一个AVR定时器中断初值设置的问题

用定时器1定时1s,假设4M晶振、设置256分频 。那为什么TCNT1里面的值每次加一对应的时间就是1/15625 秒啊,在51里面寄存器里面的数值加1不是对应的是一个指令周期么。这俩怎么理解啊? 请教下、谢谢了、、

thomascao 发表于 2013-3-12 21:50:25

本帖最后由 thomascao 于 2013-3-12 21:53 编辑

51:每过一个机器周期,计数器加1,直至计满溢出为止。因51一个机器周期等于12个振荡周期

如果晶振为4MHz,那51的计数周期为:
T=12*(1/4000000Hz)=3μs

AVR单片机采用的是RISC指令集,它执行的机器周期与时钟周期是相等的,不像传统的51单片机要进行12分频。

如果晶振为4MHz,那AVR的计数周期为:
T=1/4000000Hz =0.25us

设置256分频那就是:T=1/(4000000/256)=1/15625=64us

去看下他们的机器周期的区别就明白的

kele26 发表于 2013-3-12 23:19:43

thomascao 发表于 2013-3-12 21:50 static/image/common/back.gif
51:每过一个机器周期,计数器加1,直至计满溢出为止。因51一个机器周期等于12个振荡周期

如果晶振为4MHz ...

嗯嗯、貌似有点思路了、、太感谢你了。。哈~
页: [1]
查看完整版本: 初学者请教一个AVR定时器中断初值设置的问题