|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
使用芯片 AT Mega16 外部晶振 4.00MHz: E* k- v8 l9 y$ u
定时器1 (16位定时器)寄存器 TCCR1B = 0x04 设定 256预分频
& I" ?. a, ~+ B/ Y要利用定时器定时1秒2 S* p+ J& {, v* v
1,4000000 / 256 = 15625 说明定时器每当 1/15625 秒 就会触发一次中断
+ e( e5 X9 O' ~. e+ h2,65535 - 15625 = 49910 计算出要累加多少次才能在1秒后出发定时器1的溢出中断7 q4 ^' E8 P. z" \1 e/ j5 Q: j
3,49910 <==> C2 F6 将计算后的值换算成16进制
. Z! r I- s4 T" v' D0 E# C D: z4, TCNT1H = 0xC2 ; 对寄存器赋值- h, w* w# X9 }% e/ H3 O
TCNT1L = 0xF6 ;7 ] e# D. E2 _* J8 r4 \+ T
+ g* m1 f- D8 k: e6 [8 e2 K=============================================================================
5 g; L! E: r( u! ~0 w- {4 s; i例如用16位定时器TIMER1,4MHZ晶振,256分频,100ms定时,如何求得初值赋给TCNT1?
4 b1 Y+ j& W2 ?) h) c; T1 q65536-(4M/256)*0.1=63973.5
4 ^6 J) F E! ^9 V9 m其中,4M是晶体频率,0.1是定时时长单位秒。2 @" j: a* A( C0 U" N
对于8位的定时器8 P8 R% r- F$ Q% y
T=(2^8-计数初值)*晶振周期*分频数=(2^8-计数初值)/晶振频率*分频数& O) P8 [% [% `$ l {
计数初值=2^8-T/晶振周期/分频数=2^8-T*晶振频率/分频数
, K' {9 e: h+ n6 Z2 y0 U3 l因为AVR一指令 一周期
2 U2 H. n/ L5 S0 _3 H |
|