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

51定时器的精度

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
介绍一种很特别的自动重载的方法.
' g$ ~3 O, X. w, t, @8 J6 R0 P1:51mcu晶振选择11.0592M.这样50毫秒定时间隔的TL0的值为0.- V8 Y6 x  O) Q: C5 d! l5 P
2:中断响应后,立刻给TH0赋值,不给TL0赋值.2 X8 V! z* ~1 v: z3 |! F
3:再把该中断设为最高抢断优先级./ u4 T8 H- x# i' y' {" i
通过上述3点,就可以100%精确.误差只和晶振的精度有关了.' S& Z. x6 n/ a# S  _4 i
晶振是11.0592MHz
3 K  y: c- o6 Y7 @8 v, F机器周期= 11.0592/12 = 0.9216
9 s7 [+ V9 J4 P" g( V% A50ms:0.9216 * 50000 = 46080" j% }' u3 X' F+ n0 V
TH:(65536-46080)/256 = 76 = 0x4C/ c  F- B1 [% i. x8 M
TL:(65536-46080)%256 = 0: o6 q, \2 U) s  F8 ^+ Q/ d: m
这真是太巧了,看来你真是经验丰富才能发现这个啊!
1 f" O8 b: y0 s9 s实现代码如下:
! C; t. F4 b. e% Q: m3 o
# ?) }% k' W" M  J6 ~# U//11.0592MHz 10mS重载值(65536-9216)  n0 o. @: \4 b6 @+ d3 e
#define T_RELOAD_ (65536-9216)
2 r; I: L5 A* Z! n9 ~  r#define T_RELOAD_LO        (T_RELOAD_ & 0x00FF)//等于0
2 @6 ?2 `( ]. A8 w0 @#define T_RELOAD_HI        (T_RELOAD_ >> 8)5 [3 z: F/ {) [. g* f

* H5 \: R; L$ w. {//T_RELOAD_LO为0,代码如下.( H4 ^3 s4 D8 o5 Y5 Y* S
void T0_int(void) interrupt 1
0 c. }: t4 z2 Z{
4 P- Q$ a2 A7 [1 [" s$ P        TH0 = T_RELOAD_HI;4 q7 I0 ^& I9 w% B
        //代码& ]& U$ w& Y9 S; }- U/ V; Z
}8 }6 F8 P( S% t. w! _
8 ^" J! ^' V  U) o
//12MHz 10mS重载值(65536-10000)
: |7 y) |( `) S$ S. d% X- v$ E#define T_RELOAD_ (65536-10000)( I9 S0 ]1 u+ `% ]5 Z5 R5 y
#define T_RELOAD_LO        (T_RELOAD_ & 0x00FF)//等于2403 i& `8 i3 @5 N8 V' \
#define T_RELOAD_HI        (T_RELOAD_ >> 8)8 R6 p( t3 P% g7 x" I, O& a$ S. }
//T_RELOAD_LO不为0,代码如下.9 S" @& W3 n" f& z
void T0_int(void) interrupt 1* R9 v) [  c0 p9 Y' v/ K3 a' _+ O: M
{
! h3 S4 g8 D2 ?        unsigned int i;' [( j8 J3 i! R! V
        TR0 = 0;
& H7 Q+ F% X" w8 E$ O7 Z! u        i=T_RELOAD_+15+(TL0|(TH0<<8));
2 V: q- a5 {# ~: U4 l- K        //修正值15是T0由关闭到开启的机器周期数.要看汇编代码调整.6 M, u4 s) k1 N* {: l
        TL0=(unsigned char)i;% v6 i( I7 l7 b9 g. ?& K
        TH0=(unsigned char)(i>>8);$ _2 ^( |: K- `- r% a6 d7 f
        TR0 = 1;
" B  y+ q% \; p) N- F( ^4 I: d        //代码
" c0 t" F$ b& \" d" {& O0 |}
5 f: {8 N$ z- ?. ?" A% ]( u( v
9 P8 |  c% z, y6 O. J. v' d2 H

该用户从未签到

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

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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