找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1940|回复: 4
打印 上一主题 下一主题
收起左侧

关于单片机延时函数的理解问题

[复制链接]
跳转到指定楼层
楼主
void Delay(int n)
{
          int x;
        while(n--)
        {
                x=50;
                while(x--);
        }
}

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

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

使用道具 举报

板凳
ID:116029 发表于 2018-12-4 20:13 | 只看该作者
Delay(2)
回复

使用道具 举报

地板
ID:429805 发表于 2018-12-5 08:43 | 只看该作者
Y_G_G 发表于 2018-12-4 18:53
跟n有关系,但不是像数学那样的有对等的关系
这就是一个C函数,n是C语言里的一个变量,执行几次是C标准里 ...

STC8C51机型的 怎么计算
回复

使用道具 举报

5#
ID:401564 发表于 2018-12-5 17:24 | 只看该作者
hello_liu 发表于 2018-12-5 08:43
STC8C51机型的 怎么计算

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表