打印
[技术求助]

430延时的问题

[复制链接]
580|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我做了一个测温度的系统,温度用1602显示。程序中若用430的精确延时,则1602不显示;若把精确延时改为普通的延时函数,则1602正常显示温度,请问这是为什么呢?
精确延时函数:#define CPU_F ((double)32768)
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
普通延时函数:
void delay(long unsigned int time)
{
     while(time--);
}

相关帖子

沙发
数码小叶| | 2016-7-5 11:42 | 只看该作者
本帖最后由 数码小叶 于 2016-7-5 11:57 编辑

看错了。。

使用特权

评论回复
评论
angus118 2016-7-5 11:59 回复TA
。 
板凳
数码小叶| | 2016-7-5 14:31 | 只看该作者
32768改为8000000看一下

使用特权

评论回复
地板
xyz549040622| | 2016-7-5 16:28 | 只看该作者
有一种可能,你的精确延时出问题了。精确延时应该用的是nop吧

使用特权

评论回复
5
dirtwillfly| | 2016-7-5 16:44 | 只看该作者
建议楼主上传下完整的程序。如果没设置时钟,默认的应该是1mhz

使用特权

评论回复
6
airwill| | 2016-7-6 08:52 | 只看该作者
我觉得还是浮点运算的问题,
((long)(CPU_F*(double)x/1000000.0))
这里的计算费了太多时间哪

使用特权

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

本版积分规则

41

主题

183

帖子

1

粉丝