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

51定时器的精度

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
介绍一种很特别的自动重载的方法.1 v5 r& A( q% n* K; v) f
1:51mcu晶振选择11.0592M.这样50毫秒定时间隔的TL0的值为0.0 R( x5 R6 _- K
2:中断响应后,立刻给TH0赋值,不给TL0赋值.+ z7 V8 w& w0 b7 |+ ~  D
3:再把该中断设为最高抢断优先级.0 N! o" e  u. d( {: u
通过上述3点,就可以100%精确.误差只和晶振的精度有关了.+ I7 w- X6 I% l9 `
晶振是11.0592MHz
  y7 ]: }8 I+ j% z机器周期= 11.0592/12 = 0.9216$ G' ?' ^* y( ?& o3 l7 x) {
50ms:0.9216 * 50000 = 46080
, t8 G5 b" w# s* U& Y9 E8 k9 vTH:(65536-46080)/256 = 76 = 0x4C$ V1 j- W- T0 F" T$ I# Z! G
TL:(65536-46080)%256 = 0, C, u2 M2 W& D$ k
这真是太巧了,看来你真是经验丰富才能发现这个啊!
# w0 E  ?/ q7 Q( d# K( C# Z实现代码如下:  e4 e) @5 h% Q) R( i
3 u  o  Z3 v! L- y% j
//11.0592MHz 10mS重载值(65536-9216), q7 C' G1 x6 h5 q
#define T_RELOAD_ (65536-9216)0 j  z5 w0 A% W" g
#define T_RELOAD_LO        (T_RELOAD_ & 0x00FF)//等于0! o4 ?* t7 l0 V5 V, w- u5 J
#define T_RELOAD_HI        (T_RELOAD_ >> 8)
6 ?8 R( w' f( w7 b- ?# ~; w4 c1 f, G2 y. r* L0 h
//T_RELOAD_LO为0,代码如下.4 R0 W4 y6 O& |- e- b
void T0_int(void) interrupt 1
% S9 O& d9 g  R! ~  x{  X$ o/ p! O7 B7 t' j6 N
        TH0 = T_RELOAD_HI;
5 U: p) d1 _7 a8 }; Z: W* K9 J; k        //代码+ ~) U) S5 Y7 o( [
}; ?& f3 F. a- i. k' U

+ F" x" k5 d5 |, E6 w/ l//12MHz 10mS重载值(65536-10000)
2 b' ]7 H9 |2 ^# H" Q( P#define T_RELOAD_ (65536-10000)
; B. Z  `! f$ x% j  O8 s( q#define T_RELOAD_LO        (T_RELOAD_ & 0x00FF)//等于2405 a; r# b# x9 E9 L8 d$ X1 B) Y0 _
#define T_RELOAD_HI        (T_RELOAD_ >> 8)$ q! h3 z. J) O4 l; I
//T_RELOAD_LO不为0,代码如下.7 t$ d  E* ^/ n0 x+ n0 ~) R* u
void T0_int(void) interrupt 1, u' c# }$ P7 e9 s
{4 m; H1 y' h! \8 b2 o
        unsigned int i;$ a0 u8 S+ i" M, [) I  m; a
        TR0 = 0;+ H6 M% o( a6 d' e8 E. ]6 m* o6 S
        i=T_RELOAD_+15+(TL0|(TH0<<8));
& _& }. {  c2 f& s* D& @& N7 c+ h        //修正值15是T0由关闭到开启的机器周期数.要看汇编代码调整.6 N) ~  G) D6 J/ G& h0 I) ^& G! ?
        TL0=(unsigned char)i;
/ b4 F) A+ L/ z& v        TH0=(unsigned char)(i>>8);; j/ ?1 L0 @0 X$ v
        TR0 = 1;
3 J0 ?2 j- Z' z/ D2 N- o/ z# W        //代码& c! g. n. l2 N/ t  }
}  E2 X! H1 e) W0 w6 o7 |2 o# r# J' ]

) f: A/ z* t" D; B/ J7 z2 f

该用户从未签到

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

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-5 14:27 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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