|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
使用芯片 AT Mega16 外部晶振 4.00MHz
2 q' ~9 i( ?3 d定时器1 (16位定时器)寄存器 TCCR1B = 0x04 设定 256预分频; z, L1 }7 s, q" O# ]2 J, S+ K
要利用定时器定时1秒
+ k- v- ^7 x* f1,4000000 / 256 = 15625 说明定时器每当 1/15625 秒 就会触发一次中断+ w, H* x; a4 l5 [ X
2,65535 - 15625 = 49910 计算出要累加多少次才能在1秒后出发定时器1的溢出中断) T) m" ~% o& Z" P
3,49910 <==> C2 F6 将计算后的值换算成16进制
& p3 M' U# ^* i# F- L5 a& M1 z% U4, TCNT1H = 0xC2 ; 对寄存器赋值
+ r0 s! P$ Q4 W0 U. l; @ TCNT1L = 0xF6 ;
( S# m. k5 Y- S) d; o1 f4 D# B. @/ r2 k5 H! o v
=============================================================================
7 g ~6 R7 U0 b例如用16位定时器TIMER1,4MHZ晶振,256分频,100ms定时,如何求得初值赋给TCNT1?& Z3 F! X; S, Y. F B. @+ }
65536-(4M/256)*0.1=63973.5$ @. E! r8 B( C1 `: i: I+ f' R3 ~% M
其中,4M是晶体频率,0.1是定时时长单位秒。
8 b, V* }% h! @7 y) \5 _对于8位的定时器! B3 }5 a# Y# `+ e; V
T=(2^8-计数初值)*晶振周期*分频数=(2^8-计数初值)/晶振频率*分频数
) f4 k; Z! |0 o计数初值=2^8-T/晶振周期/分频数=2^8-T*晶振频率/分频数
' o' d+ m& P- h% S; T8 o$ T- h! J因为AVR一指令 一周期3 }6 i4 L* K. U- x
|
|