[技术求助] 430延时的问题

[复制链接]
775|6
 楼主| 像风儿一样清 发表于 2016-7-5 11:05 | 显示全部楼层 |阅读模式
我做了一个测温度的系统,温度用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 编辑

看错了。。

评论

。  发表于 2016-7-5 11:59
数码小叶 发表于 2016-7-5 14:31 | 显示全部楼层
32768改为8000000看一下
xyz549040622 发表于 2016-7-5 16:28 来自手机 | 显示全部楼层
有一种可能,你的精确延时出问题了。精确延时应该用的是nop吧
dirtwillfly 发表于 2016-7-5 16:44 | 显示全部楼层
建议楼主上传下完整的程序。如果没设置时钟,默认的应该是1mhz
airwill 发表于 2016-7-6 08:52 | 显示全部楼层
我觉得还是浮点运算的问题,
((long)(CPU_F*(double)x/1000000.0))
这里的计算费了太多时间哪
您需要登录后才可以回帖 登录 | 注册

本版积分规则

41

主题

183

帖子

1

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