搜索
bottom↓
楼主: winfuture

C51精确延时,绝对精确!(原创)

[复制链接]

出0入0汤圆

发表于 2010-6-15 02:35:58 | 显示全部楼层
回复【8楼】wenxusun 番薯猪猪
-----------------------------------------------------------------------

同感

出0入0汤圆

发表于 2010-6-15 09:21:02 | 显示全部楼层
这个必须顶!

出0入0汤圆

发表于 2010-6-15 10:01:41 | 显示全部楼层
记号一下

出0入0汤圆

发表于 2010-6-15 11:28:24 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-7-9 10:41:40 | 显示全部楼层
记下啦!!

出0入0汤圆

发表于 2010-7-9 14:08:35 | 显示全部楼层
学1下,说不定哪天有帮助

出0入0汤圆

发表于 2010-7-9 18:27:11 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-7-9 19:46:23 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-7-10 14:03:31 | 显示全部楼层
延时很重要,我的老是不准却

出0入0汤圆

发表于 2010-8-9 23:48:55 | 显示全部楼层
混合编程么。。

出0入0汤圆

发表于 2010-8-12 17:45:31 | 显示全部楼层
这个确实要顶一下。。。

出0入0汤圆

发表于 2010-8-12 17:49:48 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-8-13 16:12:24 | 显示全部楼层
直接上汇编。

出0入0汤圆

发表于 2010-8-13 22:12:32 | 显示全部楼层
mark 学习

出0入0汤圆

发表于 2010-8-13 23:58:49 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-8 11:52:24 | 显示全部楼层

出0入0汤圆

发表于 2010-9-8 13:35:34 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-8 22:52:43 | 显示全部楼层
留个爪印

出0入0汤圆

发表于 2010-9-9 20:46:15 | 显示全部楼层
回复【99楼】blueghost  天街小雨
这种死等廷时要想用“绝对精准”这个词,你必须列出如下几点:
1、晶振频率。
2、使用哪种编译环境。
3、优化级别。
从你的程序中只见你满足了第一点,说是“绝对精准”只能是蒙人,这种绝对靠的是运气。
就拿优化级别试一下吧,-1级和-8编译出来的程序你反汇编看一下试试,有时相差海了去了。
更不用提编译器不同编译出来的结果了.....
当然,廷时也不一定非要用定时器,如果要定1us,非得把定时器累死。
要精确廷时,时间稍长的用定时器,短廷时用循环,量体裁衣,乱用肯定要占资源,如果要短精确廷时,一定要反汇编计算一下到底运行了几个周期,占多少时间,否则不要说什么绝对精准,那是掩耳盗铃。

-----------------------------------------------------------------------

  感谢你,  在实际项目中刚刚开始使用单片机,最近正好用到延迟和定时。  看了你的回复很受益。

出0入0汤圆

发表于 2010-10-7 21:24:26 | 显示全部楼层
很好

出0入0汤圆

发表于 2010-10-7 21:40:54 | 显示全部楼层
顶。。。。。。。。。。

出0入0汤圆

发表于 2010-10-8 08:37:42 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-10-8 08:58:12 | 显示全部楼层
使用1T的单片机就要格外小心了,因为和标准的51汇编指令相比,有的指令时间不一样,像C8051F、STC12或DS89C4XX系列的单片机就是这样。

出0入0汤圆

发表于 2010-10-9 00:13:14 | 显示全部楼层
记号下,以后能用!

出0入0汤圆

发表于 2010-10-9 00:25:15 | 显示全部楼层
留个爪印!

出0入0汤圆

发表于 2010-10-9 13:54:22 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-10-9 17:31:21 | 显示全部楼层
试试才懂

出0入0汤圆

发表于 2010-10-9 17:48:54 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-4 23:20:43 | 显示全部楼层
最近用18B20纠结于延迟,终于有指导了

出0入0汤圆

发表于 2011-1-5 00:40:28 | 显示全部楼层
mark!!

出0入0汤圆

发表于 2011-1-5 09:17:25 | 显示全部楼层
MARK。。。。。。。。。。。。。。

出0入0汤圆

发表于 2011-1-5 16:49:32 | 显示全部楼层
mark一下,或许以后用得着。

出0入0汤圆

发表于 2011-1-5 20:01:45 | 显示全部楼层
犀利!

出0入0汤圆

发表于 2011-1-7 12:06:56 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-20 17:38:07 | 显示全部楼层
mark!

出0入0汤圆

发表于 2011-2-20 19:08:51 | 显示全部楼层
这个必须mark

出0入0汤圆

发表于 2011-2-20 21:20:46 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-21 16:00:24 | 显示全部楼层
这个要收藏

出0入0汤圆

发表于 2011-2-21 16:06:20 | 显示全部楼层
给力

出0入0汤圆

发表于 2011-2-21 16:13:54 | 显示全部楼层
钉个钉子,挂个牌子:此帖已读,留记号!

出0入0汤圆

发表于 2011-2-21 17:13:33 | 显示全部楼层
还是习惯用示波器卡下

出0入0汤圆

发表于 2011-2-21 21:31:50 | 显示全部楼层
收下,学习了。

出0入0汤圆

发表于 2011-2-22 02:11:00 | 显示全部楼层
have a look

出0入0汤圆

发表于 2011-2-22 08:45:55 | 显示全部楼层
两个同样的晶振同样的单片机在同样的环境中用同样的程序机器周期都不一样,精准只是相对的而已。24H内误差在2s就已经够了。

出0入0汤圆

发表于 2011-2-22 14:01:36 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-22 23:50:46 | 显示全部楼层
记号

出0入0汤圆

发表于 2011-2-23 09:36:17 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-23 11:25:15 | 显示全部楼层
不错,就是发言的人太少了,吵的还不够厉害!我爱吵架。!

出0入0汤圆

发表于 2011-2-23 11:42:38 | 显示全部楼层
直接用汇编吧,有多精确心中有普,不过也要看场,收藏先

出0入0汤圆

发表于 2011-2-23 23:29:24 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-4 22:07:00 | 显示全部楼层
马克之

出0入0汤圆

发表于 2011-4-8 22:19:47 | 显示全部楼层
路过~

出0入0汤圆

发表于 2011-4-8 22:23:54 | 显示全部楼层
MARK!!

出0入0汤圆

发表于 2011-4-9 13:16:27 | 显示全部楼层
谢谢楼主,留个脚印

出0入0汤圆

发表于 2011-4-9 19:45:49 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-9 23:06:45 | 显示全部楼层
标记!

出0入0汤圆

发表于 2011-4-11 15:35:06 | 显示全部楼层
i = 10; while( --i );   // 延时8*i+2个机器周期
j = 5;  while( --j );   // 延时2*j+1个机器周期

这两句是矛盾的,难道把i换成了j,速度就快了?还快那么多倍?

出0入0汤圆

发表于 2011-4-11 15:41:38 | 显示全部楼层
mark .

出0入0汤圆

发表于 2011-4-11 15:44:34 | 显示全部楼层
回复【157楼】xiaobenyi
-----------------------------------------------------------------------

这种延时,本来就不需要太准

出0入0汤圆

发表于 2011-4-11 18:19:00 | 显示全部楼层
优化级别不同,汇编代码不同。自己得到的经验。

出0入0汤圆

发表于 2011-4-11 19:00:16 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-11 19:19:23 | 显示全部楼层
回复【157楼】xiaobenyi

i = 10; while( --i );   // 延时8*i+2个机器周期  
j = 5;  while( --j );   // 延时2*j+1个机器周期  
这两句是矛盾的,难道把i换成了j,速度就快了?还快那么多倍?
-----------------------------------------------------------------------
没看仔细吧,楼主对这两个变量定义的类型是不同的。处理16位的变量肯定要慢一些。
unsigned int i = 3;     // 注意i,j的数据类型,
unsigned char j = 3;    // 不同的数据类型延时有很大不同

出0入0汤圆

发表于 2011-4-11 19:34:41 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-12 09:30:51 | 显示全部楼层
学习一下

出0入0汤圆

发表于 2011-4-12 16:38:52 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-12 19:55:46 | 显示全部楼层
绝对精确?! 纯属扯蛋!

出0入0汤圆

发表于 2011-4-12 20:10:41 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-12 20:21:41 | 显示全部楼层
用定时器操作最好,一般用定时器比较正点,因为CPU还要做别的事情

出0入0汤圆

发表于 2011-4-12 22:27:06 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-12 23:48:51 | 显示全部楼层
mark!!

出0入0汤圆

发表于 2011-4-12 23:54:02 | 显示全部楼层
刚开始进这个论坛,留个印

出0入0汤圆

发表于 2011-4-14 11:22:02 | 显示全部楼层
学习一下

出0入0汤圆

发表于 2011-4-15 10:37:20 | 显示全部楼层
新手学习中,佩服楼主毅力

出0入0汤圆

发表于 2011-4-25 21:38:23 | 显示全部楼层
果断分享

出0入0汤圆

发表于 2011-4-25 22:11:50 | 显示全部楼层
学习,谢谢!

出0入0汤圆

发表于 2011-4-26 17:10:04 | 显示全部楼层
学习了

出0入0汤圆

发表于 2011-4-27 18:55:01 | 显示全部楼层
回去试试去!

出0入0汤圆

发表于 2011-4-28 18:25:57 | 显示全部楼层
thanks

出0入0汤圆

发表于 2011-4-28 19:20:30 | 显示全部楼层
学习了,谢谢分享

出0入0汤圆

发表于 2011-4-28 20:58:23 | 显示全部楼层
留记号!

出0入0汤圆

发表于 2011-5-17 12:47:36 | 显示全部楼层
貌似用中断就可以跳出很准的延时了啊

出0入0汤圆

发表于 2011-5-17 14:33:58 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-18 18:26:18 | 显示全部楼层
回复【楼主位】winfuture  
-----------------------------------------------------------------------

华丽丽的好东东。学习着

出0入0汤圆

发表于 2011-6-16 16:32:54 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-17 09:51:35 | 显示全部楼层
回复【楼主位】winfuture
-----------------------------------------------------------------------

精确地延时跟晶振有关,并且楼主的延时占用了系统资源,意义不大。

出0入0汤圆

发表于 2011-6-26 22:39:07 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-26 23:05:42 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-26 23:59:23 | 显示全部楼层
定时器资源有限 mark

出0入0汤圆

发表于 2011-6-27 00:21:17 | 显示全部楼层
呵呵。我喜欢用汇编编写,因为容易算出到底花了多少时间。
其次,再怎么精确,也只是因为基数不够大或者时钟周期比较小(小于微妙级别),还是不能直接用来当时钟用。
误差还是有的,其次,还要考虑环境温度等的影响(对晶振的滤波可能有影响)。。。
呵呵。玩时钟的话,可以选一些专门的时钟芯片。

出0入0汤圆

发表于 2011-6-27 00:39:09 | 显示全部楼层
mark!!!

出0入0汤圆

发表于 2011-6-27 11:27:20 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-5 01:07:20 | 显示全部楼层
定时器是个宝贵的资源,要合理利用

出0入0汤圆

发表于 2011-7-13 17:01:20 | 显示全部楼层
LZ有心了

出0入0汤圆

发表于 2011-7-28 14:35:26 | 显示全部楼层
楼主头像盯着看了两遍

出0入0汤圆

发表于 2011-7-28 14:47:24 | 显示全部楼层
nop~~好用点啊~~~

出0入0汤圆

发表于 2011-8-1 16:43:28 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-20 14:44:14 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-20 15:06:52 | 显示全部楼层
楼主辛苦了,Mark

出0入0汤圆

发表于 2011-8-20 15:27:23 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-20 15:42:18 | 显示全部楼层
试试看
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 03:43

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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