求助, 如何在51系统上实现长时间的精确延时?

2020-01-27 11:31发布

大家好,我有一个数据采集监控的设备, 用STC 12C5A60实现的, 主循环里面我自己做了一个任务调度的机制, 在主循环里跑 采集数据到内存缓冲区/ 更新LCD显示 这两个任务, 同时通过一个外部中断输入用来触发MCU进行数据采集, 现在的需求是我需要每隔5分钟周期(具体周期多长需要能够配置)进行数据上报(通过GPRS完成), 可是板上资源没有实时时钟可以用, 大家觉得这种情况下如何实现相对比较精确的定时任务?

我现在想到的是通过片内的定时器做成每隔比如10ms中断一次, 设置一个unsigned long的计数器变量, 在定时器中断里面每次将变量+1, 然后判断是否达到5分钟周期.

用这种方案的话精度怎么样, 能做到多少?  有更好实现方式的麻烦指点一下, 谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
NJ8888
1楼-- · 2020-01-27 14:38
更好的是换掉,51你用16位重装精度是你晶体精度
cjunrong
2楼-- · 2020-01-27 17:25
 精彩回答 2  元偷偷看……
kevincoxee
3楼-- · 2020-01-27 18:01
ms级精度没问题的
wajlh
4楼-- · 2020-01-27 21:25
关键是累积误差会比较大,单次的误差好说
xiaobendan001
5楼-- · 2020-01-27 21:26
这样要求累积误差也没什么关系吧
Johnwoo
6楼-- · 2020-01-27 21:49
wajlh 发表于 2013-8-11 16:22
关键是累积误差会比较大,单次的误差好说

谢谢!
今天学习了一下Keil的嵌入式操作系统RTX Tiny, 准备把系统移植到tiny上, 用系统提供的os_wait(IVL) 实现了间隔延时,不精确,不过粗略测了一下基本可以满足需求。

一周热门 更多>