标题: 关于单片机延时时间计算问题 [打印本页]

作者: dumn    时间: 2019-6-4 18:30
标题: 关于单片机延时时间计算问题
void Delay1ms(uint y)
{
    uint x;
    for( ; y>0; y--)
    {
        for(x=110; x>0; x--);
    }
}
这是一段延时1ms的程序,不懂这是怎么计算的,才1ms

像void delay(unsigned char i)
{
        while(i--);

}
这样来设定时间延时的话不是更方便嘛



作者: wulin    时间: 2019-6-5 05:45
延时函数有多种写法,没有严格规定。楼主的第一种写法适合ms级延时,第二种写法适合us级延时。一般不需要精确计算。对于控制一些对时序要求比较高的外部器件,可以根据MCU时钟频率,用单片机助手之类的工具计算延时很方便。
作者: yzwzfyz    时间: 2019-6-5 08:29
在编译后,打开它生成的汇编格式程序,找到对应的延时部分,就可得看到这介看时命令执行了多少条机器码指令,而每条指令的执行时间是固定,这样你就可以计算出延时的总时间了。
前提是:你必须懂汇编语言。
如果你不懂汇编语言。就只能在调试中走单步,看工具中走这一步延时用多少时间。
作者: ZGJ20170905    时间: 2019-6-5 10:01
这样写延时函数不准确,如果需要精确延时,可用定时器实现啊,1ms,1us都可以准确实现。
作者: cjm82    时间: 2019-6-5 15:26
STC烧写软件里面就有个延时函数的生成器,用那玩意就行了.
作者: a89588038    时间: 2019-6-5 15:35
看看这个软件!!

单片机小精灵v1.3完美破解.rar

996.3 KB, 下载次数: 16


作者: lyf0911    时间: 2019-6-5 16:57
规定语言
作者: lele5211314    时间: 2019-6-5 17:34
有好多思路的
作者: dumn    时间: 2019-6-7 18:55
a89588038 发表于 2019-6-5 15:35
看看这个软件!!

啊哈哈哈哈,这个我也有!!!
作者: dumn    时间: 2019-6-7 18:56
yzwzfyz 发表于 2019-6-5 08:29
在编译后,打开它生成的汇编格式程序,找到对应的延时部分,就可得看到这介看时命令执行了多少条机器码指令 ...

大致了解,谢谢!!!




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