|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
使用芯片 AT Mega16 外部晶振 4.00MHz
. H9 I' W/ m8 D0 I, y9 D2 N定时器1 (16位定时器)寄存器 TCCR1B = 0x04 设定 256预分频
, y7 Q" v. i/ i5 a5 F* F0 m要利用定时器定时1秒
! o# L8 B% A* d2 M1,4000000 / 256 = 15625 说明定时器每当 1/15625 秒 就会触发一次中断" O) c: B4 c! `' k- X
2,65535 - 15625 = 49910 计算出要累加多少次才能在1秒后出发定时器1的溢出中断- z* { I& M7 O
3,49910 <==> C2 F6 将计算后的值换算成16进制
0 p: }2 C1 t% a9 A4, TCNT1H = 0xC2 ; 对寄存器赋值$ m8 p# G7 A- Z4 ` u6 z
TCNT1L = 0xF6 ;
8 A; ^: t/ u3 r# q2 c4 w6 ~; s- J3 u& d4 w% \
=============================================================================
4 |! D* ?- D. A7 _* b例如用16位定时器TIMER1,4MHZ晶振,256分频,100ms定时,如何求得初值赋给TCNT1?) `+ J; ]8 Z: Z
65536-(4M/256)*0.1=63973.5
- O7 Q6 }! ^- @' D# E& p# L8 F其中,4M是晶体频率,0.1是定时时长单位秒。
; G% g2 a& _! o) c: C对于8位的定时器* N- _& ^3 ]; x$ Q: O! l" M7 [2 T
T=(2^8-计数初值)*晶振周期*分频数=(2^8-计数初值)/晶振频率*分频数1 l) F' k6 W3 f/ s
计数初值=2^8-T/晶振周期/分频数=2^8-T*晶振频率/分频数( n" y( @0 m7 z0 M3 P4 a
因为AVR一指令 一周期
* ^1 i, @2 X' p# i5 V9 ~ |
|