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

51定时器的精度

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
介绍一种很特别的自动重载的方法.& V8 [$ S3 e# q6 h
1:51mcu晶振选择11.0592M.这样50毫秒定时间隔的TL0的值为0.
" v* |! A( a$ J* f, x4 d4 q2:中断响应后,立刻给TH0赋值,不给TL0赋值.9 J+ c0 N1 e5 m# _- h
3:再把该中断设为最高抢断优先级.
0 {8 k  _$ h8 U2 m8 s' e  z" e通过上述3点,就可以100%精确.误差只和晶振的精度有关了.) s9 p" I: u4 C, L' k
晶振是11.0592MHz3 Z9 i$ [8 W9 h% d1 X
机器周期= 11.0592/12 = 0.9216& Y: O0 v4 G5 P( V
50ms:0.9216 * 50000 = 46080/ e, ~0 _, U- z
TH:(65536-46080)/256 = 76 = 0x4C7 R0 b4 @% }+ n# Q0 |7 B
TL:(65536-46080)%256 = 09 l% X8 d4 K6 S9 Y) _
这真是太巧了,看来你真是经验丰富才能发现这个啊!! z6 ?- |, z4 ]- K7 d" O- z
实现代码如下:
& ]* a8 C# L5 e- C( X. K
6 t+ L" i3 \7 r' j6 D3 C//11.0592MHz 10mS重载值(65536-9216)3 j, Y" j$ w' ?/ {5 Y
#define T_RELOAD_ (65536-9216)+ g7 j( \1 x5 e. F* x6 y3 o
#define T_RELOAD_LO        (T_RELOAD_ & 0x00FF)//等于0/ p3 n/ ~+ d5 ]' S4 M, U
#define T_RELOAD_HI        (T_RELOAD_ >> 8)3 V- U) i* V1 K1 O9 U
8 o9 ~) \: X5 A- K+ _& j% C' M
//T_RELOAD_LO为0,代码如下.
; X$ M' J' e2 V8 x, ?0 P, T6 }void T0_int(void) interrupt 1
+ d! ~1 G/ Y8 }' `; J* g{
$ u5 s+ Y) M* B6 f        TH0 = T_RELOAD_HI;1 o5 x1 R2 `& N% ]
        //代码% N$ X( S% _1 s' A  V# S
}6 `1 F! [- S7 e5 u7 \# k

0 Z; a: o3 B/ K' `; |; N0 ^$ w+ y//12MHz 10mS重载值(65536-10000)9 j$ [5 L2 N8 P/ g8 R$ y; h% D7 c
#define T_RELOAD_ (65536-10000)3 V" o, |" e3 q" Z! J  l" s- Z
#define T_RELOAD_LO        (T_RELOAD_ & 0x00FF)//等于240, ?: Z1 D, u' k
#define T_RELOAD_HI        (T_RELOAD_ >> 8)
+ t9 M: h8 Z; G' H* f//T_RELOAD_LO不为0,代码如下.+ W9 Q. {6 n4 D( H; Q; M8 l4 W
void T0_int(void) interrupt 1
* t- T, x9 C: n% y; h{
- I0 c& B) T1 J6 I. d+ g        unsigned int i;: _6 c- C) b4 c+ b  S
        TR0 = 0;  X0 @9 i! V1 y. p2 u) z; {
        i=T_RELOAD_+15+(TL0|(TH0<<8));  O& {8 P, s' n# m6 \
        //修正值15是T0由关闭到开启的机器周期数.要看汇编代码调整., {6 b- Y- b- p8 e, }% G, |
        TL0=(unsigned char)i;3 I# U: ^) l# i
        TH0=(unsigned char)(i>>8);
3 P) s  @) H0 n        TR0 = 1;/ p- J7 T( N! D+ N# @# p' X, X
        //代码
# r7 f# b1 b5 `7 c}
" l. K# u- E8 P0 d* R9 H( {/ K) F5 H  D7 P  m* V! z

该用户从未签到

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

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-18 13:25 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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