打印

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

[复制链接]
958|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
之前有一段时间写关于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,有这样的功能,如图

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

STCISP01.jpg (145.34 KB )

STCISP01.jpg

使用特权

评论回复
地板
dirtwillfly| | 2015-12-13 08:58 | 只看该作者
cov0xt 发表于 2015-12-13 08:51
在STC最新的软件里面 stc-isp-15xx-v6.85I,有这样的功能,如图

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

这是基于固定的mcu和晶振频率的

使用特权

评论回复
5
caoenq| | 2015-12-14 08:50 | 只看该作者
仿真时候的延时和程序正常跑时候的延时是不一样的

使用特权

评论回复
6
15698208161|  楼主 | 2015-12-14 21:10 | 只看该作者
caoenq 发表于 2015-12-14 08:50
仿真时候的延时和程序正常跑时候的延时是不一样的

在这里时间不是由秒来衡量的,而是由CPU执行的命令条数来衡量的。两种情况下时间可能不一样,cpu跑的命令可能不一样吗?

使用特权

评论回复
7
dirtwillfly| | 2015-12-14 21:37 | 只看该作者
15698208161 发表于 2015-12-14 21:10
在这里时间不是由秒来衡量的,而是由CPU执行的命令条数来衡量的。两种情况下时间可能不一样,cpu跑的命令 ...

有误差是正常的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

14

帖子

0

粉丝