|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
使用芯片 AT Mega16 外部晶振 4.00MHz
' T; y' L9 k: G. b9 S, T# F定时器1 (16位定时器)寄存器 TCCR1B = 0x04 设定 256预分频
1 Q5 B$ O3 X# X3 x, U, x要利用定时器定时1秒
( r" i) K! @- G* i; P1,4000000 / 256 = 15625 说明定时器每当 1/15625 秒 就会触发一次中断
4 y2 z+ C' W) I2,65535 - 15625 = 49910 计算出要累加多少次才能在1秒后出发定时器1的溢出中断- k# I/ u2 ~; P* j; ^
3,49910 <==> C2 F6 将计算后的值换算成16进制, B. d3 F% e6 N
4, TCNT1H = 0xC2 ; 对寄存器赋值
( D/ s9 Z- x% g a/ [3 Q& z TCNT1L = 0xF6 ;; R A8 @1 x5 c z8 Z
( |' D" ?& H3 p" y, F9 S; u
=============================================================================# H8 n# g2 U/ z, e
例如用16位定时器TIMER1,4MHZ晶振,256分频,100ms定时,如何求得初值赋给TCNT1?) M4 N5 i' K/ |) ~7 O
65536-(4M/256)*0.1=63973.5
8 v7 V- ?0 Z# D# y其中,4M是晶体频率,0.1是定时时长单位秒。5 Z. b( d; a5 k
对于8位的定时器, x4 |1 U: F8 M+ w* Y$ c7 @
T=(2^8-计数初值)*晶振周期*分频数=(2^8-计数初值)/晶振频率*分频数9 e1 P1 \; |1 m" f; V
计数初值=2^8-T/晶振周期/分频数=2^8-T*晶振频率/分频数
/ C9 w3 v: m8 w; R' [, O. D, x因为AVR一指令 一周期! s9 l% T# C: u+ z6 F
|
|