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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
关于STC89C52单片机的延时程序,晶振12MHz,机器周期1us,程序如下:void Delay1ms()                //@12.000MHz1 v* J( l/ u7 i% V/ Y6 ^/ g
{
; m6 [* W/ k! x; z6 v, f$ A  Q        unsigned char i, j;" s0 V. }3 E, q( a+ Q

2 H* I( M: m5 `: \' k

/ S8 N- A) v/ E, Z( B# q        i = 2;           //1us9 [- d- K& B! S, J+ v1 a, u
        j = 239;      //1us  W0 m3 d3 e/ I4 i+ I1 J
        do
" X; B6 ?% v! t        {1 @0 {' k2 _1 h  e( Q
                while (--j);
' Z% E' U$ U8 R' u9 L! M4 o- n        } while (--i);9 F6 ~$ n- }7 E' S0 J$ W
}5 e# e: }$ G8 V7 Q1 y) z5 g
延时时间的计算:497*2+1+1+2+2=1000us=1ms
' @2 ~2 z5 b# ?, f
+ `1 s! e  m9 z; i. U! H" j- c' a循环体执行了497次也即是497个机器周期,我不明白的为什么还要乘以2,还望告知,详细一点。4 s( U; P7 w, S( e0 ]$ u& R

该用户从未签到

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-7-19 18:47 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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