C语言delay延时时间怎么算,说的详细点谢谢

比如这个:voidDelayMS(uintx){uchart;while(x--)for(t=0;t<120;t++);}DelayMS(300);... 比如这个:
void DelayMS(uint x)
{
uchar t;
while(x--) for(t=0;t<120;t++);
}
DelayMS(300);
展开
 我来答
小Cherry丸子吖
2018-04-05 · TA获得超过2.7万个赞
知道小有建树答主
回答量:144
采纳率:43%
帮助的人:16.2万
展开全部
  1. DelayMS(300)表示希望系统delay 300毫秒,系统有自己的RTC,根据硬件的晶振(Hz)可以计算出一次振荡大约多少耗时,这样就能大约算出1ms需要多少次振荡;

  2. 简单比喻一次振荡需要1us,那1ms就是1000次振荡,300ms就是300x1000次振荡,这样就能大概的计算出300ms delay;

  3. 这得看你的CPU运行一条指令得多久,像单片机89C51一般一条1us。

  1. C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言;

  2. 尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台;

  3. 二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的国际标准语法,称为ANSI C,作为C语言最初的标准。

weeweebt
2014-01-19
知道答主
回答量:19
采纳率:0%
帮助的人:10.6万
展开全部
DelayMS(300)表示希望系统delay 300毫秒,那系统如何来计算这300毫秒呢?首先,系统有自己的RTC,根据硬件的晶振(Hz)可以计算出一次振荡大约多少耗时,这样就能大约算出1ms需要多少次振荡,简单比喻一次振荡需要1us,那1ms就是1000次振荡,300ms就是300x1000次振荡,这样就能大概的计算出300ms delay.
追问
那直接写DelayMS(300);这一句话行吗  不写那个循环了
追答
我上面的回答是说明一个系统计算RTC的原理,下面这个函数是DelayMS的实现,
void DelayMS(uint x) { uchar t; while(x--) for(t=0;t<120;t++); }
这是一种DelayMS的实现方法。你直接写DelayMS当然不行啊,因为没有实现,肯定会链接出错。这个DelayMS的方法的原理是:
你首先知道系统一次最简单的for循环大约耗时,这里可以看出是 300/120=2.5ms,所以循环120次刚好是300MS。那为什么一次for循环是2.5ms呢?主要原理就是我上面说的原理
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友471ccf5f4
2014-01-19 · TA获得超过323个赞
知道小有建树答主
回答量:342
采纳率:25%
帮助的人:121万
展开全部
可以调用库函数来获取前后时间差,计算出具体的延迟时间。如果这个是在嵌入式驱动里面的,可大概地按照CPU频率及循环次数来大概估算延迟,但这个延迟不太精确。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
墨夷梦寒2Y
2014-01-19 · 超过12用户采纳过TA的回答
知道答主
回答量:80
采纳率:0%
帮助的人:30.1万
展开全部
执行for里面的时间再乘以x就是延时时间
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式