搜索
bottom↓
回复: 18

延时函数的问题,求大神帮忙,急!!

[复制链接]

出0入0汤圆

发表于 2013-4-27 08:24:54 | 显示全部楼层 |阅读模式
本帖最后由 大哈欠E 于 2013-4-27 10:12 编辑

这次想做个温度传感器,用ds18b20和1602显示,所以要用到精确的延时函数,但是我看网上给的延时函数和我用keil4软件调试的时间怎么不一样啊?比如说
void delay(uint num)
{
   while(num--);

}
我用delay(8)在12mhz的晶振下实际是几十微妙可我调试的怎么有几百us  郁闷 我是菜鸟,求大神帮忙解答。。

本帖子中包含更多资源

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

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2013-4-27 08:26:37 | 显示全部楼层
是前两次想减才是时间值吗?

出70入0汤圆

发表于 2013-4-27 08:29:55 | 显示全部楼层
你看看keil配置的频率和你实际使用的频率是否相同。

出0入0汤圆

发表于 2013-4-27 08:30:45 | 显示全部楼层
把while封装成一个延时函数可以吗,主函数中用while(1)

出0入0汤圆

 楼主| 发表于 2013-4-27 08:31:39 | 显示全部楼层
绿茶山人 发表于 2013-4-27 08:29
你看看keil配置的频率和你实际使用的频率是否相同。

我配置了是12MHz。。

出0入0汤圆

 楼主| 发表于 2013-4-27 08:33:29 | 显示全部楼层
dingdan258 发表于 2013-4-27 08:30
把while封装成一个延时函数可以吗,主函数中用while(1)

怎么改,这个是随便写的,我就是想单独调试一下while(num--)的时间,可是不准确 是什么问题??

出0入0汤圆

发表于 2013-4-27 08:52:33 | 显示全部楼层
额,你是用两次时间相减的么?还有就是你试试把num的数据类型改为 unsigned char 型试试,不知道有用不?额,看你断点放的位置貌似也最好改下,一个断点放在第一个while前,第二个断点放在D=1;前

出70入0汤圆

发表于 2013-4-27 08:57:27 | 显示全部楼层
本帖最后由 绿茶山人 于 2013-4-27 09:01 编辑

楼主用硬件延时吧,比软件延时准确,反正你定时器又没用。你这个delay(80) 实际上又不是80us,容易误导人。

出0入0汤圆

发表于 2013-4-27 09:00:08 | 显示全部楼层
有个叫单片机小精灵的软件,可以方便的得到比较准确的延时函数

出70入0汤圆

发表于 2013-4-27 09:00:26 | 显示全部楼层
学51可以看看这本书 http://www.amobbs.com/forum.php? ... C%E5%85%A5%E5%BC%8F       六楼下载《时间触发嵌入式系统设计》 第11章 延时

出0入0汤圆

发表于 2013-4-27 09:11:49 来自手机 | 显示全部楼层
用char型变量看看

出0入0汤圆

 楼主| 发表于 2013-4-27 09:42:33 | 显示全部楼层
绿茶山人 发表于 2013-4-27 08:57
楼主用硬件延时吧,比软件延时准确,反正你定时器又没用。你这个delay(80) 实际上又不是80us,容易误导人。 ...

嗯 我只是想看看 用延时函数 而且有时候这点延时 我觉得没必要用定时器

出0入0汤圆

 楼主| 发表于 2013-4-27 09:47:09 | 显示全部楼层
zjk 发表于 2013-4-27 08:52
额,你是用两次时间相减的么?还有就是你试试把num的数据类型改为 unsigned char 型试试,不知道有用不?额 ...

让我更郁闷的是在D=1 Q=1之前放置不了断点  是不是keil4没安装好啊

出0入0汤圆

 楼主| 发表于 2013-4-27 09:59:46 | 显示全部楼层
superAFE 发表于 2013-4-27 08:53
void delay(uint num)
{
   while(num--);

改了一下 是快了一点 但是还是50多微妙 我在想 用的是12mhz 一个机器周期一微妙  while(num--)   一指令算两周期 8-- 应该也是十多微妙吧 怎么会有50多微妙 是不是不正确啊??

出0入0汤圆

 楼主| 发表于 2013-4-27 10:00:26 | 显示全部楼层
lmly 发表于 2013-4-27 09:00
有个叫单片机小精灵的软件,可以方便的得到比较准确的延时函数

嗯 我看看

出0入0汤圆

 楼主| 发表于 2013-4-27 10:01:10 | 显示全部楼层
绿茶山人 发表于 2013-4-27 09:00
学51可以看看这本书 http://www.amobbs.com/forum.php?mod=viewthread&tid=5039835&highlight=%E6%97%B6%E9 ...

嗯 有时间看看

出0入0汤圆

发表于 2013-4-27 10:06:41 | 显示全部楼层
你两个实参传递给形参的数据类型都不一样!

出0入0汤圆

发表于 2013-4-27 11:15:15 | 显示全部楼层
单片机小精灵用法可以哦。。设置好频率和 T。就可以生成代码了。。



谷歌一下“单片机小精灵”就能找到下载了。

本帖子中包含更多资源

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

x

出0入0汤圆

 楼主| 发表于 2013-4-27 16:41:18 | 显示全部楼层
Alimy 发表于 2013-4-27 11:15
单片机小精灵用法可以哦。。设置好频率和 T。就可以生成代码了。。

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

本版积分规则

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

GMT+8, 2024-7-23 16:13

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

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