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

51定时器的精度

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
介绍一种很特别的自动重载的方法.1 X, Z, g  m. E+ G5 a
1:51mcu晶振选择11.0592M.这样50毫秒定时间隔的TL0的值为0.6 U1 y( e& A  B$ y
2:中断响应后,立刻给TH0赋值,不给TL0赋值.
  \- B- G% u1 J9 C* E3:再把该中断设为最高抢断优先级.
8 J9 v) d$ I( D+ p& P  ^6 q4 x) w3 H通过上述3点,就可以100%精确.误差只和晶振的精度有关了.
9 C" ^6 R$ C: E) L1 @6 }( K晶振是11.0592MHz
; P0 E9 b& v7 G/ I/ e% _' I机器周期= 11.0592/12 = 0.9216
- z- a8 T8 W8 s. ]; S# V6 P" \50ms:0.9216 * 50000 = 46080
- }. N" x, @; @5 tTH:(65536-46080)/256 = 76 = 0x4C
7 ?  x7 E5 D5 D( OTL:(65536-46080)%256 = 0- L, w5 o! [" u' g! O
这真是太巧了,看来你真是经验丰富才能发现这个啊!
9 I6 g3 }5 B, A8 z" C- M实现代码如下:
+ I& l# ]1 ?8 F* {
8 \, Y7 T! g8 Q4 e+ r//11.0592MHz 10mS重载值(65536-9216)/ @3 A+ u  @" [! ]5 m
#define T_RELOAD_ (65536-9216)
& H7 p6 r5 o6 W9 C7 v$ v#define T_RELOAD_LO        (T_RELOAD_ & 0x00FF)//等于0) w9 O4 }/ T7 R5 a
#define T_RELOAD_HI        (T_RELOAD_ >> 8)
! l  g; x* f) |. a8 M# i9 T& k" \: Z3 B; l
//T_RELOAD_LO为0,代码如下.+ v7 m& N6 N4 o
void T0_int(void) interrupt 1
; ?* a" z9 m# i" g9 B5 C! P6 `{
2 J5 \' O& A1 M' ~6 p0 @7 v+ _        TH0 = T_RELOAD_HI;; R7 f" @6 d+ i0 R2 ~1 q/ i6 {9 [& i) ^; Q
        //代码' C( Y+ u. v6 j: h% ?5 @. e, `
}
8 \! E  ]. p: K9 X0 R" T  v# G( j9 I! E* d/ C) b: J: O
//12MHz 10mS重载值(65536-10000)
  ]2 ?6 B7 Q- p  I: d#define T_RELOAD_ (65536-10000)
+ X  G" q# s  i1 G. `% Q" K+ m#define T_RELOAD_LO        (T_RELOAD_ & 0x00FF)//等于240
' f$ R8 b; l1 p; H; u) V#define T_RELOAD_HI        (T_RELOAD_ >> 8)
; W2 Z1 z& A4 V" H, ^" S//T_RELOAD_LO不为0,代码如下.* c, O. t3 U+ m2 Z# J2 T
void T0_int(void) interrupt 1
. h7 p; N% Y9 J, W4 l8 z& F9 ^2 A{
5 [. s9 c& D8 O. N; a6 t        unsigned int i;+ W1 h9 f  \% G, l% o: B4 r
        TR0 = 0;4 C8 e, z# m* @& M# t1 t' c
        i=T_RELOAD_+15+(TL0|(TH0<<8));
  V9 G, n! C; `- \! _5 p        //修正值15是T0由关闭到开启的机器周期数.要看汇编代码调整.' o8 q+ n- K) L! P
        TL0=(unsigned char)i;5 F; Q; `( O/ Y0 y4 O" s) y' ?# T
        TH0=(unsigned char)(i>>8);1 y* B% \( N- H; s1 ?. {! }
        TR0 = 1;
5 @2 A0 q8 l% `. X& e  V1 y        //代码8 I/ E4 w$ o0 u+ w" D
}, v5 r3 {; W9 r. ?! G
& Y9 b; T8 Y: u. V

该用户从未签到

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

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-3 13:22 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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