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

51定时器的精度

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
介绍一种很特别的自动重载的方法.
3 ~1 c( |# \& o$ ^! I. a1:51mcu晶振选择11.0592M.这样50毫秒定时间隔的TL0的值为0.
6 k% [0 D1 k& [. v( j+ n& G2:中断响应后,立刻给TH0赋值,不给TL0赋值.: v) X" Y' Y  F$ y* {" R" X
3:再把该中断设为最高抢断优先级.5 {/ l; U" C1 Q( |# e
通过上述3点,就可以100%精确.误差只和晶振的精度有关了.+ q1 H+ g9 E+ p" N* H
晶振是11.0592MHz' H9 d( T2 o0 X9 x9 ?' P8 ^
机器周期= 11.0592/12 = 0.9216" W, \# \; h% P& E/ {' `
50ms:0.9216 * 50000 = 460809 t0 t- j' z* I/ Z0 R3 [1 i
TH:(65536-46080)/256 = 76 = 0x4C
# h# @9 y0 Y. ]4 E$ Z$ O7 p$ e- q. o0 aTL:(65536-46080)%256 = 07 W" J* [8 Q2 h, n, v; w( C6 n
这真是太巧了,看来你真是经验丰富才能发现这个啊!  m5 f: D' T0 j/ V& b/ b
实现代码如下:
: i/ ]$ Y/ N. Q" }( c/ k+ _( V
7 ?( Y3 E& X3 w8 M- A//11.0592MHz 10mS重载值(65536-9216)
8 [2 x$ W4 V$ V$ c. Z#define T_RELOAD_ (65536-9216); a& {* W* w- ~* t: y7 s9 [# G
#define T_RELOAD_LO        (T_RELOAD_ & 0x00FF)//等于0$ A2 b2 e' s$ ]" U" y
#define T_RELOAD_HI        (T_RELOAD_ >> 8)* h! U! F' S6 ]/ T( A

; D; B, g" O1 x+ V( Y& \//T_RELOAD_LO为0,代码如下.+ b7 l  u! S! F+ P/ z! m
void T0_int(void) interrupt 1
' t: v8 @/ q  H3 J{5 e+ C7 d# u- Z) J1 G9 ]0 }, i
        TH0 = T_RELOAD_HI;6 Z2 r  Y' h( G) B& R) M0 i
        //代码
5 g& w2 Y2 B7 x2 O  G}
! |. \% Y+ y% W; j4 w
1 q0 J# Z% E: `! Z1 [9 v$ h# y//12MHz 10mS重载值(65536-10000)
- {7 U& @# e* `2 r1 X6 H/ e1 a#define T_RELOAD_ (65536-10000)
6 Z& p! ]+ z6 M/ H$ }& v! N9 G+ e#define T_RELOAD_LO        (T_RELOAD_ & 0x00FF)//等于240( A$ v, m# K5 M9 ]# z$ @4 c2 w% ~
#define T_RELOAD_HI        (T_RELOAD_ >> 8)
5 r4 q) z6 ?4 `9 t, R$ f//T_RELOAD_LO不为0,代码如下.* |' U( ?8 E) x) Y7 g
void T0_int(void) interrupt 1
  b4 h- ]! n5 o4 Q# [9 L% o{9 {: N2 {) M8 M5 {
        unsigned int i;
4 @: N$ Z- _8 ?  s        TR0 = 0;3 g8 b& n4 `& m9 o+ g' b5 L- \; ^3 e
        i=T_RELOAD_+15+(TL0|(TH0<<8));, F, z8 z5 D0 ^% I" O# D6 }7 @
        //修正值15是T0由关闭到开启的机器周期数.要看汇编代码调整.; L3 X3 F' N" j- A( B! H
        TL0=(unsigned char)i;
4 C+ S+ i8 Q, {8 u- B        TH0=(unsigned char)(i>>8);4 ?. |. P0 a8 u. T6 H. S. n$ T0 A
        TR0 = 1;7 V- q9 V  ]; N" E2 N
        //代码
/ X) i' C: W8 b8 P}2 Y1 |  s& H# H8 O. A, x) ]9 l

7 x  ]: z3 a7 a( d6 z: z

该用户从未签到

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

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-20 08:15 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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