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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
void DelayMS(uint ms)​4 [0 Y* y8 q4 A1 z

. r$ L# ~( s: Y( O{​0 Z) s; ^2 ~2 P  r

8 ?0 ^8 M. I0 |% {& _         uchar t;​, b3 E6 e: c2 K5 N' E1 L5 Y

- ~- H# H# y8 i" F        while(ms--)​
. l( [" l8 B7 @) Y5 K0 m% C( k4 C! {* `% O& Q
        {​% w: ^, ?, p7 }+ x% E
- P' P/ I1 g* q5 T; J9 B& b9 {
                 for(t=0;t<120;t++);​9 m) Q2 j( g$ o. h$ q0 v
& h4 X9 Y. |# ^( N8 A
        }. s0 R) V- ?0 t, z2 j

7 e  {$ Z8 G) k5 f

该用户从未签到

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

该用户从未签到

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

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-12 06:05 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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