在单片机编程中,12M晶振,延时1ms,常用for(i=0;i<120;i++);谁能帮我解释一下,为什么这个语句就是1ms?

2024-12-29 00:22:02
推荐回答(4个)
回答1:

这个是for循环是一个软件延时,意思就是单片机执行for循环耗费的时间大约在1ms左右,并不准确的,这个for循环没有人能计数出来单片机在执行它能耗费多少机器周期,都是通过仿真看到的。

这个for循环也是别人在仿真时候测试CPU执行空i--指令耗费大约在1ms.

回答2:

恩,谁说这个是1ms呢。呵呵不过你看加一个也许是10个时钟周期呢,然后120个大约就是1ms。精确定时使用定时器吧

回答3:

这个没有特别的标准,是根据指令周期累加的时间,然而现实情况就比较复杂,

  1. 函数调用时间没有考虑

  2. 现在很多单片机都流水作业,指令周期比传统51短的多,而且受跳转程序影响,跳转后流水线作废

  3. 受中断影响

死等延时不是个好方法,移植性差。

回答4:

做任务,谢谢