这个延时程序看了很久都没弄懂到底延时时间是多少,求大神指点。

qq_35335387 2016-06-16 05:47:44
void Delay(WORD n)
{
WORD x;
while(n--)
{
x=5000;
while(x--);
}
}
当n=2时,所代表的延时时间是多少?
...全文
529 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2016-06-18
  • 打赏
  • 举报
回复
要看晶振了,通过晶振计算出执行一条指令需要的时间; 不过,这样的延时是不准确的,不如使用中断来做的精确
赵4老师 2016-06-17
  • 打赏
  • 举报
回复
n*5000的量纲不是时间。
qq_35335387 2016-06-17
  • 打赏
  • 举报
回复
那我可以认为延时时间是n*5000吗?
赵4老师 2016-06-17
  • 打赏
  • 举报
回复
使用电脑计时有时误差会很大,因为待测程序段的运行会影响电脑时钟。 将待测程序段循环足够多次,手动掐秒表计时可能更准确。
  • 打赏
  • 举报
回复
具体事件多少未知,反正是n * 5000次循环。
qq_35335387 2016-06-17
  • 打赏
  • 举报
回复
难到这个延时函数是错的??
fefe82 2016-06-17
  • 打赏
  • 举报
回复
未知 .... 与太多东西相关了 ... ================== 开了优化,可能没有任何延迟。整个函数都可能被完全优化掉。
qq_35335387 2016-06-17
  • 打赏
  • 举报
回复
我用的晶振是12M的,是用在单片机上面的。但是我没弄懂这个延时函数,所代表的延时时间。
  • 打赏
  • 举报
回复
既然是单片机,拿你可以读它的计时器计数,类似PC上8253/8254的计数器0,在两次计数之间调用delay,然后根据计数差值和晶振频率就可以算出时间。
lm_whales 2016-06-16
  • 打赏
  • 举报
回复
延时有忙延时,和定时器延时两种方案 忙延时就是循环 需要跟汇编关联,确定每个指令执行多少周期 一共执行多少指令 然后延时 定时器延时,PC上,在多线程,多进程环境下,用的多点 嵌入式,也可自行处理, 或者采用实时操作系统,定时器来延时 定时器延时,基本不占用CPU。而是倚靠定时器硬件的定时中断,到达延时的目的
ooolinux 2016-06-16
  • 打赏
  • 举报
回复
这跟指令周期有关(跟CPU速度相关:架构、流水线、频率、Cache等有关),单片机上可能有用,一般不这么用吧。
flying_music 2016-06-16
  • 打赏
  • 举报
回复
这是嵌入式里面的程序吗?
zhantaiyu123 2016-06-16
  • 打赏
  • 举报
回复
这个函数的延时时间需要你自己仿真。外部晶振不一样,延时时间是不同的!

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧