找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 795|回复: 1
打印 上一主题 下一主题
收起左侧

单片机定时器定时问题

[复制链接]
跳转到指定楼层
楼主
ID:601478 发表于 2020-4-20 17:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用定时器0定时,每隔x分钟执行一个函数,x的值手动输入,问题:计时不准确,每计时1分钟会延迟5秒,该误差会随着x的增加而增加,每多1分钟,计时结果延迟5秒,延迟时间为5x,什么原因会导致这样的问题,愿闻其详
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:213173 发表于 2020-4-20 21:23 | 只看该作者
定时器做长时间计时会积累误差,约0.5%以内,这很正常,但不至于每分钟误差5秒。按以下方法轻松调整到1s/小时。
以STC15W404AS为例可以通过修改定时器TL0重装值修正。

char i=0;//数据范围+127~-128,注意TL0数据范围0~255

void Timer0Init()                //50毫秒@12.000MHz
{
        AUXR &= 0x7F;                //定时器时钟12T模式
        TMOD &= 0xF0;                //设置自动重装模式
        TL0 = 0xB0+i;                //设置定时初值
        TH0 = 0x3C;                        //设置定时初值
        TF0 = 0;                                //清除TF0标志
        TR0 = 1;                                //定时器0开始计时
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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