延时函数的时间
时间:10-02
整理:3721RD
点击:
请问这个函数,调用之后延时多长时间?
void delay()
{
; ;
}
图一
![](../imgqa/ele/mcu/mcu-3721rd.com-39503te405klfqym.jpg)
图二
方法二:分析反汇编指令,如图三,图四。
![](../imgqa/ele/mcu/mcu-3721rd.com-39504vfgglrxtqgy.jpg)
图三
![](../imgqa/ele/mcu/mcu-3721rd.com-39505n1jrz5enidk.jpg)
图四
void delay()
{
; ;
}
第一:你没告诉我们你的晶振多大
第二:你没有告诉我们你用的是什么单片机
不同的单片机对于延时计算式不一样的,51的有51的算法,AVR有AVR的机器周期和时间算法。
这是两个_nop_()
希望大神计算下?
哦,不好意思:
晶振:12Mhz
单片机:STC89C52Rc
谢谢了!
4us吧,进入函数和出函数用了2us,执行两个指令又2us。不过我不确定,建议你keil仿真下。
首先给出结论,该函数延时长度为4个机器周期,(12M晶振等于4us)。从两个方面来验证。
方法一:keil调试,如图一,图二。
图一
![](../imgqa/ele/mcu/mcu-3721rd.com-39503te405klfqym.jpg)
图二
方法二:分析反汇编指令,如图三,图四。
![](../imgqa/ele/mcu/mcu-3721rd.com-39504vfgglrxtqgy.jpg)
图三
![](../imgqa/ele/mcu/mcu-3721rd.com-39505n1jrz5enidk.jpg)
图四
路过瞅瞅大神的回答
用软件调试可以看出来,c语言中不同语句执行时间是不一样的
第一:你没告诉我们你的晶振多大
第二:你没有告诉我们你用的是什么单片机
不同的单片机对于延时计算式不一样的,51的有51的算法,AVR有AVR的机器周期和时间算法。
。
就是微秒级的延时,通常没有必要仔细计算具体时间,要算的话就大概是4微妙吧。
嗯,受教了。
路过瞅瞅大神的回答