|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
使用芯片 AT Mega16 外部晶振 4.00MHz+ {9 |4 f' Z" b
定时器1 (16位定时器)寄存器 TCCR1B = 0x04 设定 256预分频, Q, S* ^. a2 S" O
要利用定时器定时1秒
- U! _$ r9 `6 C) Q9 i1,4000000 / 256 = 15625 说明定时器每当 1/15625 秒 就会触发一次中断
6 M# l2 \* u4 e1 m t5 _, E; b7 S2,65535 - 15625 = 49910 计算出要累加多少次才能在1秒后出发定时器1的溢出中断
0 p; J. n, N" @6 `3,49910 <==> C2 F6 将计算后的值换算成16进制
- i3 f! H9 ]; O3 X4, TCNT1H = 0xC2 ; 对寄存器赋值 t; `' {* d k' g) f. i; C
TCNT1L = 0xF6 ;
3 p5 `% `: H% d
8 e; o, M$ W, g+ C* `=============================================================================7 ?% w. U' k/ @0 w7 ]) n" n
例如用16位定时器TIMER1,4MHZ晶振,256分频,100ms定时,如何求得初值赋给TCNT1?
% b/ c: {) Z$ y" ~) Y* A65536-(4M/256)*0.1=63973.5
) p9 J0 r% {5 L+ W8 I5 C其中,4M是晶体频率,0.1是定时时长单位秒。4 ?" x7 }) W! ]- k
对于8位的定时器$ g' x& v5 }) s
T=(2^8-计数初值)*晶振周期*分频数=(2^8-计数初值)/晶振频率*分频数
8 O: t1 Z' k/ ? s z- Q3 a计数初值=2^8-T/晶振周期/分频数=2^8-T*晶振频率/分频数
1 i0 P% @$ F4 Y& ~( C因为AVR一指令 一周期* x; w& s6 I4 l* O
|
|