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

那位大佬帮我康康这单片机延时程序DelayMS怎么理解?

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
void DelayMS(uint ms)​9 i! b; V, R( s' o& t
. T( S& {" i" s* l5 v7 w- [
{​0 @, Q4 A; D1 p- m6 ?1 _  N
: _: i, R; Q1 Y# }0 G$ E
         uchar t;​
7 ?% `! `8 L) _% u) Q! \* R
' z( P& W& c& R2 `8 j# K. F        while(ms--)​
/ k" j$ v% i1 ^8 [
( H: J4 K1 m; j        {​
, a7 q: u& a/ n# `) L' n
) \% J6 @4 X+ I" H) y% T" \6 j8 q) T                 for(t=0;t<120;t++);​
: c+ c# n* g8 V) d  f* n0 W2 P- O1 |6 d
        }6 E1 u6 }( [. `+ i  d

; o- _- x9 [* |! k1 O

该用户从未签到

2#
发表于 2022-1-20 15:41 | 只看该作者
ms * 120 个循环,啥都不干,干等时间来达到延时的目标,粗略延时,不精确

该用户从未签到

3#
发表于 2022-1-20 16:13 | 只看该作者

; g, N2 x1 M. ?- s+ C首先在主程序里面应该给MS赋一个值(DelayMS(500)),然后进入子程序后判断这个值是不是为零,如果不是,这个值进行一个自减,接着执行for循环,按照你的程序来说for里面执行的是空指令,大概一个机器周期(11.0592M大概一微秒),for循环将空指令执行120次大概就是120微秒,for执行完成后再对ms进行判断,依次再执行;;如果是就结束循环,跳出子函数;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-9 09:08 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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