EDA365电子工程师网

标题: 定時器 [打印本页]

作者: bgod1986414    时间: 2012-9-25 17:35
标题: 定時器
請問一下,單晶片計時器設定的觀念- t( p) F1 I0 A5 ^; v, |4 C
看完書上還是沒很了解..
3 W2 }& [3 J- N& b有沒有人可以跟我說一下我的盲點在哪..
+ ^! d! F, r  U6 P" I$ F4 e7 Y
  b# P# {4 B" r' t; H7 u+ d單晶片用12MHz的石英震盪器
3 R' `5 j, ~& \, e: C然後因為8051一個機械周期4 q7 c% f& ?1 j0 |( x& T  N" k
需要12個石英震盪器周期
" _7 X9 f6 \! K2 O& F7 O- \) y1 }/ u$ j12MHz /12 = 1MHz =1us 所以每1us就送給8051一個脈波: Y9 J; r: @0 C- S

# B2 g  C  @* g然後內部計時器是16位元 所以最高數到65536 就產生溢位中斷- s5 y0 V/ Y* A" f. A; b2 ?5 L
每1us就送入一個脈波計時器就加1$ H4 j* ~' P8 q! r3 [$ F  y% u) G
當計數器加到65536就中斷 這個意思是每65536us 就溢位中斷一次
, K" o0 X& d8 ?7 @: ]- d& }+ n
$ p& g0 \. }$ k那如果要設定時間間隔為5ms秒的話. J0 t2 P" _$ F( X
就代表每送入5000個1us的脈波就中斷一次  
  `2 x# U9 ]/ W& y( a* \1 y但為什麼 計時器設定數值是5 o7 P& Q$ F& h% ]" b! p( t
65536-5000 =60536 再轉16進制 去分高低位元就好了?
( k) n; k! C7 m1 u60536不是意思是,當計數器內部加到60536 就產生中斷嗎?
9 c8 ]$ M9 Q0 l+ b 這樣不就是60536us中斷一次?% g4 }5 Y' @8 P
不是5ms中斷一次
作者: 熊彦杉    时间: 2012-9-26 18:39
可能你理解错了,因为你设置的时候已经将开始计数的起点设为60536,所以还是只有5ms。ps每次计数的起点和你设置的初始值有关,而不是每次都从0开始!
作者: 黑驴蹄子    时间: 2012-9-28 15:49
LZ这么理解:! U- e2 b4 g' J! O8 O3 D' Y$ @/ ^
初值是60536,5 O4 ]/ @! S& ?, g) I1 @/ H' q3 R
所以从60536开始加: i9 ^- }- @+ Q: Y5 m
加到65536溢出中断
) }8 X: r) L, K+ L4 E9 }" t需要加5000次* Z, I1 T3 Z+ H( I/ z& P6 l2 ~0 K
所以是5ms
作者: 张凡    时间: 2012-10-12 09:29
顶一个!!




欢迎光临 EDA365电子工程师网 (http://bbs.elecnest.cn/) Powered by Discuz! X3.2