打印
[51单片机]

为啥延时为1ms

[复制链接]
1764|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
王万鸿|  楼主 | 2013-10-21 13:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
forgot| | 2013-10-21 13:09 | 只看该作者
因为执行这段代码用了近1ms的时间  和机器周期有关

使用特权

评论回复
板凳
delin17| | 2013-10-21 13:24 | 只看该作者
自己看汇编数算机器周期就可以知道了。。
很多这种只是粗略延时

使用特权

评论回复
地板
NE5532| | 2013-10-21 13:48 | 只看该作者
运行这些语句所编译出的汇编语句耗时1mS,但是注意C语言这样延时,延时长度与编译器和优化设置有很大关系。

使用特权

评论回复
5
puppet21| | 2013-10-21 15:04 | 只看该作者
我补充一个问题:

这种延时的方式和晶振有关系么?是不是只有12M的晶振才是这样表示1ms?

使用特权

评论回复
6
dirtwillfly| | 2013-10-21 15:25 | 只看该作者
puppet21 发表于 2013-10-21 15:04
我补充一个问题:

这种延时的方式和晶振有关系么?是不是只有12M的晶振才是这样表示1ms? ...

有的。换其他晶振延时就变了

使用特权

评论回复
7
NE5532| | 2013-10-21 16:19 | 只看该作者
puppet21 发表于 2013-10-21 15:04
我补充一个问题:

这种延时的方式和晶振有关系么?是不是只有12M的晶振才是这样表示1ms? ...

当然有关系。

使用特权

评论回复
8
xhujian| | 2013-10-21 17:03 | 只看该作者
每个指令执行都要时间,比如是执行一次要1us。你让CPU傻傻的执行1000X1000次,就延时了1S钟。
把单片机的 机器周期 再一看下就知道如何算。
至于为什么这个函数是1S。只能说,在你的机子的硬件环境和编译设置下。恰好是1S。
比如 晶体改了,CPU初始化时时钟是 X12 还是X1 .变量是DATA,还是XDATA。 同样这个函数延时都不一样。这个延时大该估计一下用。不用精确的算。没有意义。
最简单的方式。
你调用 delay(100) 来灭灯,亮灯,快了或慢了就改 120。

使用特权

评论回复
9
黄小俊| | 2013-10-21 19:14 | 只看该作者

使用特权

评论回复
10
jackhwang| | 2013-10-22 08:46 | 只看该作者
这个函数实现延时1ms,和单片机的型号与晶振都有关系。比如AT89S51在12MHz情况下,这个函数延时约1ms!

使用特权

评论回复
11
outstanding| | 2013-10-22 11:23 | 只看该作者
你那个延时是1ms么  ?你的参数都没有赋值,你知道多少时间?

使用特权

评论回复
12
coody| | 2013-10-22 11:29 | 只看该作者
建议 实际的项目程序不要这样长延时,1ms好多MCU都可以扫描一个大的任务了。。。。

使用特权

评论回复
13
很忙| | 2013-10-22 12:00 | 只看该作者

使用特权

评论回复
14
ZG11211| | 2013-10-22 20:13 | 只看该作者
参数都还没赋值,哪只眼睛能看出它就是延时1ms?

使用特权

评论回复
15
王万鸿|  楼主 | 2013-10-23 14:10 | 只看该作者
对不起大家大家 都说啦这么多我没反应  挺对不起大家的见解

使用特权

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

本版积分规则

1

主题

15

帖子

0

粉丝