找回密码
 注册
关于网站域名变更的通知
查看: 217|回复: 3
打印 上一主题 下一主题

单片机程序怎么计算延时时间?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-4-12 10:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
void delay(unsigned int i)​  j2 S* A% [( {- T
{​3 Q0 ]7 P  l4 r4 k2 w2 o( W8 R% O
2 }! y4 N+ q# n" m" K
        unsigned int j;​" P5 L5 U4 Q( m; L' N, J) e& ^
        while(i--)​
1 @- Z5 C" g, p5 [3 C- I* ^        {​
( X! G& x& w% x8 X" V, K- V, P                for(j=0;j<0x20;j++);​
  k0 k4 F6 n/ }0 w; \" W3 T0 l        }​/ ]  c' K' W6 \0 ^9 G

. O8 h- x9 @0 F; H) G6 V# f) R}​' V; R. ^5 H5 J4 J$ N
这个延时函数,while循环和for循环,延时多久啊?为什么我用keil调试算的时间和自己算的不一样& k" q/ N4 r6 y9 V, k. ^# g+ t: f3 X5 l
9 ]6 d4 d" D1 `1 b; E1 }/ o. p

该用户从未签到

2#
发表于 2022-4-12 11:10 | 只看该作者
这个延时,和编译器有关系,如果是汇编的代码,能看到指令,就能计算指令周期,准确的预计时间,你进入调试模式看看汇编代码,应该能够算出来

该用户从未签到

3#
发表于 2022-4-12 14:48 | 只看该作者
这种不精确,遇到中断就去执行中断了

该用户从未签到

4#
发表于 2022-4-12 15:21 | 只看该作者

' ~0 d* o4 v* E这是C语言,C语言要先编译成汇编才能烧录到单片机中,不同的编译环境,编译成的汇编代码是不一样的
" A2 A8 Q& V. N4 F$ F& {' H8 w所以,这是没法计算的
, |( i, \0 f+ \4 L5 N# w/ e对于STC,最简单省事的就是在下载器那复制
- @. ~1 A3 P  r& P' Z$ R1 c- ?如果要精确的,那就用定时器
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-17 17:32 , Processed in 0.125000 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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