剛開始學的時候,8位的timer0和timer2用的比較熟練,timer1一直迷迷糊糊。于是找了一些書籍,好心人把原理圖翻譯成了中文,易懂推薦《AVR單片機菜鳥進階》沈添國主編 這是我好不容易從兩本書上找到的中英文的對照圖
08ca7a73c800b821257be0957d9c619.jpg (385.17 KB, 下載次數: 117)
下載附件
2019-6-9 17:01 上傳
2d0eb8300cc6ef49a0a6b3c76762a7e.jpg (382.88 KB, 下載次數: 114)
下載附件
2019-6-9 17:00 上傳
這是我在課本上找的,共用寄存器部分的圖,學到這里就一下子通了
8592fc90e70815597b5d5e5c1c50847.jpg (124.16 KB, 下載次數: 101)
下載附件
2019-6-9 16:57 上傳
還有一個要注意的點就是:
timer1的時鐘源選擇是靠TCCR1B來控制的,例如A的工作方式啥的還是用TCCR1A來配置,但是時鐘源又得靠TCCR1B來進行配合。
(這里真的是有點奇葩)
現在那我自己的話語總結一下實際使用方法:
timer1和timer0/2的用法十分相似,主要區別在于兩個共有的寄存器,和timer1獨有的A,B兩個16位的,功能也有增加一個輸入捕獲。所以無論是常用的比較匹配還是溢出,只要對相應的A,B寄存器賦值就好H(高位),L(低位),具體賦值參考如下。然后就是上面紅字注意的時鐘源選擇部分了。剩下就是照著說明弄一些什么禁止,模式,使能之類的操作。
(本圖是使用ICCAVR編譯器的代碼生成器產生的部分代碼,并不完善)
5700c3d40b02b6247043eb48f1b8914.png (20.12 KB, 下載次數: 112)
下載附件
2019-6-9 17:07 上傳
|