关于如何写出精确的软件延时代码的小方法,不知道对不对?

[复制链接]
1278|6
 楼主| 15698208161 发表于 2015-12-12 22:26 | 显示全部楼层 |阅读模式
之前有一段时间写关于DS18B20的程序,那个通信协议十分严格,对于延时时间准确度要求很高。看到网上确定延时时间都是把C翻译成汇编,用执行语句长度乘时钟周期得到。可我不会汇编,最近调试定时器时发现了一方法,似乎有用。
步骤如下:
1.        在程序中对定时器初始化。
2.        打开keil调试
3.        在下面的watch栏里输入TL0
4.        进行单步调试,进入延时函数
5.        在延时函数里选一个语句点,观察相临两次经过这个延时点时TL0的值num1,num2;
6.        这段时间为
                 T=(num2-num1)/计数脉冲频率

评分

参与人数 1威望 +5 收起 理由
dirtwillfly + 5 很给力!

查看全部评分

dirtwillfly 发表于 2015-12-13 08:45 | 显示全部楼层
感谢分享思路。很赞
cov0xt 发表于 2015-12-13 08:51 | 显示全部楼层
在STC最新的软件里面 stc-isp-15xx-v6.85I,有这样的功能,如图

官方给的延时,应该是很准确的吧

本帖子中包含更多资源

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

×
dirtwillfly 发表于 2015-12-13 08:58 | 显示全部楼层
cov0xt 发表于 2015-12-13 08:51
在STC最新的软件里面 stc-isp-15xx-v6.85I,有这样的功能,如图

官方给的延时,应该是很准确的吧 ...

这是基于固定的mcu和晶振频率的
caoenq 发表于 2015-12-14 08:50 | 显示全部楼层
仿真时候的延时和程序正常跑时候的延时是不一样的
 楼主| 15698208161 发表于 2015-12-14 21:10 | 显示全部楼层
caoenq 发表于 2015-12-14 08:50
仿真时候的延时和程序正常跑时候的延时是不一样的

在这里时间不是由秒来衡量的,而是由CPU执行的命令条数来衡量的。两种情况下时间可能不一样,cpu跑的命令可能不一样吗?
dirtwillfly 发表于 2015-12-14 21:37 来自手机 | 显示全部楼层
15698208161 发表于 2015-12-14 21:10
在这里时间不是由秒来衡量的,而是由CPU执行的命令条数来衡量的。两种情况下时间可能不一样,cpu跑的命令 ...

有误差是正常的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

14

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部