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

关于STC89C52单片机的延时1ms程序的疑问?

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
关于STC89C52单片机的延时程序,晶振12MHz,机器周期1us,程序如下:void Delay1ms()                //@12.000MHz7 G2 w6 P3 s' H$ ?" ^" S
{% w8 X- C* l8 A3 i5 n% I0 Q0 o
        unsigned char i, j;
& f$ p/ S: y0 Q. ^) N0 e$ e8 o. m. I4 t$ @! i# R1 d) u2 c. C

7 ?1 w2 a: _+ C% g        i = 2;           //1us
8 s+ |- S8 H8 Z2 A6 O: o! @! G, |" c- \        j = 239;      //1us1 L! l" F: `1 z. i: X
        do
( o; |# X+ B* }& ~% a        {
7 ]( s7 @6 w  p: D                while (--j);( G- \  {8 x3 B! N
        } while (--i);
& [$ K& [$ T/ D( F* D}) }7 V. [% l, f3 d8 c+ J
延时时间的计算:497*2+1+1+2+2=1000us=1ms
; l: m- H" r  l# a- U! y- v  P7 }' c
循环体执行了497次也即是497个机器周期,我不明白的为什么还要乘以2,还望告知,详细一点。: l9 E; L3 R- V% k) T: w; E

该用户从未签到

2#
发表于 2021-11-15 12:22 | 只看该作者
while指令在汇编中应该是DJNZ指令,该指令为两个机器周期。

该用户从未签到

3#
发表于 2021-11-15 13:09 | 只看该作者
最好看看他的机器代码,那样更好理解

该用户从未签到

4#
发表于 2021-11-15 13:09 | 只看该作者
每个循环两个机器周期
  • TA的每日心情
    开心
    2021-11-16 15:01
  • 签到天数: 1 天

    [LV.1]初来乍到

    5#
    发表于 2021-11-15 18:55 | 只看该作者
    每个循环两个机器周期
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-10-9 17:49 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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