刚开始学的时候,8位的timer0和timer2用的比较熟练,timer1一直迷迷糊糊。于是找了一些书籍,好心人把原理图翻译成了中文,易懂推荐《AVR单片机菜鸟进阶》沈添国主编 这是我好不容易从两本书上找到的中英文的对照图
这是我在课本上找的,共用寄存器部分的图,学到这里就一下子通了
还有一个要注意的点就是:
timer1的时钟源选择是靠TCCR1B来控制的,例如A的工作方式啥的还是用TCCR1A来配置,但是时钟源又得靠TCCR1B来进行配合。
(这里真的是有点奇葩)
现在那我自己的话语总结一下实际使用方法:
timer1和timer0/2的用法十分相似,主要区别在于两个共有的寄存器,和timer1独有的A,B两个16位的,功能也有增加一个输入捕获。所以无论是常用的比较匹配还是溢出,只要对相应的A,B寄存器赋值就好H(高位),L(低位),具体赋值参考如下。然后就是上面红字注意的时钟源选择部分了。剩下就是照着说明弄一些什么禁止,模式,使能之类的操作。
(本图是使用ICCAVR编译器的代码生成器产生的部分代码,并不完善)
|