找回密码
 注册
关于网站域名变更的通知
查看: 238|回复: 2
打印 上一主题 下一主题

51定时器的精度

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-11-23 13:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
介绍一种很特别的自动重载的方法.% E) A! R. a1 }9 s1 p8 H
1:51mcu晶振选择11.0592M.这样50毫秒定时间隔的TL0的值为0.
8 H) o* G( j) Q" M% z: E, K" ]2:中断响应后,立刻给TH0赋值,不给TL0赋值.: r9 C# c/ s5 E' N, N/ R
3:再把该中断设为最高抢断优先级.5 _& K$ K9 K2 R4 V5 Q! e* m8 s
通过上述3点,就可以100%精确.误差只和晶振的精度有关了.  B1 a* e% L) O1 A! S" L) H% I' M$ Y
晶振是11.0592MHz
; T8 x% \4 b* }) p0 _5 H机器周期= 11.0592/12 = 0.9216
% K- O4 g& V* ^+ L, n50ms:0.9216 * 50000 = 46080
" H7 f2 k% ^1 r: I4 l) D1 {7 UTH:(65536-46080)/256 = 76 = 0x4C
1 P4 P1 u( c: i, X- q) h+ uTL:(65536-46080)%256 = 0* p; e4 L* ~- d# ]
这真是太巧了,看来你真是经验丰富才能发现这个啊!
  I- y' b8 k, F9 M实现代码如下:
9 U3 y6 B  s4 r* |' l9 }, F  c- B9 S; W* n( I- I! i
//11.0592MHz 10mS重载值(65536-9216)" _+ o2 B! ]" n" t
#define T_RELOAD_ (65536-9216)
( u8 N3 s, E; F( L1 `6 [#define T_RELOAD_LO        (T_RELOAD_ & 0x00FF)//等于0& U3 o% n1 T0 ]& \+ Q; D
#define T_RELOAD_HI        (T_RELOAD_ >> 8)3 d" S& B- a  [) p
) [. {$ n- j) |9 c
//T_RELOAD_LO为0,代码如下.! j* @! X" ?. {5 X7 }
void T0_int(void) interrupt 1* t1 Y  C9 B: f) P) s0 N& i1 d
{2 @* s: V. e8 r4 i- v
        TH0 = T_RELOAD_HI;
) r+ z/ a$ K: B  R  `        //代码9 `: v& K0 O: X" l4 I
}
' d' J: h+ d; s( Q- ~( S* y( p1 B- l$ F/ a
//12MHz 10mS重载值(65536-10000), J" U: k" W: r
#define T_RELOAD_ (65536-10000)
% P( W& R3 N" R$ p* f: k3 Z#define T_RELOAD_LO        (T_RELOAD_ & 0x00FF)//等于240
& _, F+ Z2 K9 |8 k#define T_RELOAD_HI        (T_RELOAD_ >> 8)
$ g# P5 @! A1 Q//T_RELOAD_LO不为0,代码如下.: {6 H. s; u# x/ {5 _
void T0_int(void) interrupt 17 A9 v- }& E8 e
{
: i# s' f/ T/ o: x; l9 v        unsigned int i;
7 g( ?6 W# ~6 p        TR0 = 0;6 w: W3 Y3 H' ]- V) @
        i=T_RELOAD_+15+(TL0|(TH0<<8));3 Z/ h  D6 s- K6 P. l0 a
        //修正值15是T0由关闭到开启的机器周期数.要看汇编代码调整.6 e8 t. t/ U( |0 ~/ d, N
        TL0=(unsigned char)i;
# R6 P3 {/ a6 o7 [. j" ^        TH0=(unsigned char)(i>>8);8 J2 \" [1 b! M$ v9 R& d2 h
        TR0 = 1;
+ g6 G4 p1 ?& w1 g' U/ n* C2 z        //代码  ^' M, d* E' g4 [) k1 A2 Q$ \3 Q
}
5 F3 O& X7 {6 d  x! \$ O
5 J- N4 }. w  T- n5 J

该用户从未签到

2#
发表于 2021-11-23 13:38 | 只看该作者
定时器的自动重载法

该用户从未签到

3#
发表于 2021-11-23 13:39 | 只看该作者
51的定时中断
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-9 06:39 , Processed in 0.078125 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表