EDA365电子论坛网

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

作者: bgod1986414    时间: 2012-9-25 17:35
标题: 定時器
請問一下,單晶片計時器設定的觀念* }2 |# d0 E! D
看完書上還是沒很了解..
. G0 ]9 s) p" ^有沒有人可以跟我說一下我的盲點在哪..
/ |' P4 ~& O, N5 s- p
* f% v+ U) @9 X: C2 w( D單晶片用12MHz的石英震盪器; a) X# a* X+ S# D: k
然後因為8051一個機械周期1 q$ {# v/ j7 ]6 L: T. e
需要12個石英震盪器周期3 @9 F' M1 g( d
12MHz /12 = 1MHz =1us 所以每1us就送給8051一個脈波
- P. J+ {2 v& F! C7 y! y
; B  d3 o% D4 S( ^0 A/ U然後內部計時器是16位元 所以最高數到65536 就產生溢位中斷
  d+ @: ~' T4 u$ f! K每1us就送入一個脈波計時器就加1) L9 A- |5 p. K/ N' d( J
當計數器加到65536就中斷 這個意思是每65536us 就溢位中斷一次
$ n* O0 R6 P! Z: l, B2 f# q$ q; ^1 H: x9 O
那如果要設定時間間隔為5ms秒的話; i( O6 P4 l5 ^
就代表每送入5000個1us的脈波就中斷一次  % s1 C3 U+ q# |; |7 X' F
但為什麼 計時器設定數值是
, j/ v0 B+ M; V7 @4 @" |3 B65536-5000 =60536 再轉16進制 去分高低位元就好了?( |3 O3 W+ G! h! z
60536不是意思是,當計數器內部加到60536 就產生中斷嗎?
! m- ~, b/ ^" I$ C* W& v 這樣不就是60536us中斷一次?$ f- q  Z# ?. G$ ~( a8 v5 k0 C
不是5ms中斷一次
作者: 熊彦杉    时间: 2012-9-26 18:39
可能你理解错了,因为你设置的时候已经将开始计数的起点设为60536,所以还是只有5ms。ps每次计数的起点和你设置的初始值有关,而不是每次都从0开始!
作者: 黑驴蹄子    时间: 2012-9-28 15:49
LZ这么理解:
$ [$ k+ F+ l7 J; ^- _8 a" r& Y% R( j初值是60536,
7 t' e5 p; c- d) {* |所以从60536开始加
+ h+ [" _& C9 W6 R; \/ J加到65536溢出中断
/ q* h5 k  p( M3 j$ i: t9 d需要加5000次- U8 Z5 v  b3 {- a, O( H- S
所以是5ms
作者: 张凡    时间: 2012-10-12 09:29
顶一个!!
作者: soijor    时间: 2019-8-4 11:11
3楼正解,整数累加5000次,5000×机器周期1us=5000us=5ms




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2