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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
关于STC89C52单片机的延时程序,晶振12MHz,机器周期1us,程序如下:void Delay1ms()                //@12.000MHz; \  B  k" w2 Q, ~; ~& g( T
{/ q- t0 b& V0 V& Y6 i0 v: g) s
        unsigned char i, j;1 |( k" ?$ Q' P; \1 J6 q" r: e" i* O

1 A9 e% `+ U4 G& z9 T0 |

0 Z# g' }" J) \2 w+ @! X& t        i = 2;           //1us
7 V1 c5 E2 j+ L4 W1 y0 c        j = 239;      //1us8 U3 ^. L5 h. t7 p
        do5 x, _8 @# v8 v! v5 Q
        {( C, K# `5 D( G9 M; i4 Q$ U
                while (--j);
* O7 p$ w" k7 c) L5 X  O        } while (--i);
2 ^* A2 L6 Y; f2 v8 g}
! r( `+ P4 X7 Q! m& E8 G延时时间的计算:497*2+1+1+2+2=1000us=1ms# c; p3 K  |2 [0 n3 g4 e

5 V3 o8 ]% ?) Y6 _! I2 C$ a  t循环体执行了497次也即是497个机器周期,我不明白的为什么还要乘以2,还望告知,详细一点。
( I. ]7 @4 ?9 Q& f0 f% {. |

该用户从未签到

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-8-12 23:25 , Processed in 0.093750 second(s), 23 queries , Gzip On.

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

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

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