标题: 关于单片机延时函数的理解问题 [打印本页]

作者: hello_liu    时间: 2018-12-4 17:05
标题: 关于单片机延时函数的理解问题
void Delay(int n)
{
          int x;
        while(n--)
        {
                x=50;
                while(x--);
        }
}

这个函数如果传n=2,表示延时多少时间?20us?请教一下大佬一下


作者: Y_G_G    时间: 2018-12-4 18:53
跟n有关系,但不是像数学那样的有对等的关系
这就是一个C函数,n是C语言里的一个变量,执行几次是C标准里面的,并不绝对等于多少时间。
这个函数是要先经过编译器编译成机器语言,然后再烧录进单片机去执行的。
对于KEIL来说,C函数是要先编译成汇编,然后再烧录的。运行的时间主要是看编译之后的汇编的执行时间的,不同编译噐,效率不同,函数的延时时长也会不同的。
如果你要看这个函数延时多长时间,可以在C中添加断点,或者是运行之后看生成的汇编,主要是看执行了多少个时钟,然后,再对比这个单片机的系统时钟,最后去计算。
怎么这么恐怖呀,我自己都看不明白了
作者: gzhoney    时间: 2018-12-4 20:13
Delay(2)
作者: hello_liu    时间: 2018-12-5 08:43
Y_G_G 发表于 2018-12-4 18:53
跟n有关系,但不是像数学那样的有对等的关系
这就是一个C函数,n是C语言里的一个变量,执行几次是C标准里 ...

STC8C51机型的 怎么计算
作者: Y_G_G    时间: 2018-12-5 17:24
hello_liu 发表于 2018-12-5 08:43
STC8C51机型的 怎么计算

不用计算,在下载器上有一个延时计算器,输入你想要的时长,自动生成C代码,注意看右上角




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1