51单片机怎么理解这句话? 延时1ms (3j+2)*i=(3×33+2)×10=1010(微秒)
答案:2 悬赏:60 手机版
解决时间 2021-03-23 01:28
- 提问者网友:我没有何以琛的痴心不悔
- 2021-03-22 10:56
51单片机怎么理解这句话? 延时1ms (3j+2)*i=(3×33+2)×10=1010(微秒)
最佳答案
- 五星知识达人网友:詩光轨車
- 2021-03-22 11:34
程序中 j 循环 执行了33次,注释中的计算数据 是 3j+2,for 循环中,只有第一句 j=0 被执行一次,判断条件 j<33 及 增量 j++ 均执行了 33次,那么 公式中 的 加2 就是 j=0 的执行时间。
从 注释 的计算中得知,计算单位为 us,赋值语句(j=0)只算了 2个单位(us),可知 单片机机械周期(指令周期)为 1us;
根据 单片机 指令周期时间 ,赋值语句 (等号) Td 占 2个机械周期(2us),自增/自减 语句 Tz 占 1个机械周期(1us),判断语句(>、<、==等)Tp 占 2个机械周期(2us);
在 本程序中,j 的 for循环 赋值语句 执行 1 次(共 Td ×1=2us),自增语句 及 判断语句 均执行 了33 次(共(Tz+Tp)×33=3us×33),j 循环总和为 (Tz+Tp)×j+Td=3j+2=3×33+2;
i for 循环 则决定了 j 循环的次数,初略计算 可以 使用 (3j+2)×i,精确计算 还得考虑 i 的 Td 也=2us,i 的 (Tz+Tp)×10 也=3×10=30us,也就是说,i 循环本身 总时间是 3i+2 =32us。
综上,实际 总时间 是 3i+2+(3j+2)×i=1042us
从 注释 的计算中得知,计算单位为 us,赋值语句(j=0)只算了 2个单位(us),可知 单片机机械周期(指令周期)为 1us;
根据 单片机 指令周期时间 ,赋值语句 (等号) Td 占 2个机械周期(2us),自增/自减 语句 Tz 占 1个机械周期(1us),判断语句(>、<、==等)Tp 占 2个机械周期(2us);
在 本程序中,j 的 for循环 赋值语句 执行 1 次(共 Td ×1=2us),自增语句 及 判断语句 均执行 了33 次(共(Tz+Tp)×33=3us×33),j 循环总和为 (Tz+Tp)×j+Td=3j+2=3×33+2;
i for 循环 则决定了 j 循环的次数,初略计算 可以 使用 (3j+2)×i,精确计算 还得考虑 i 的 Td 也=2us,i 的 (Tz+Tp)×10 也=3×10=30us,也就是说,i 循环本身 总时间是 3i+2 =32us。
综上,实际 总时间 是 3i+2+(3j+2)×i=1042us
全部回答
- 1楼网友:笑迎怀羞
- 2021-03-22 12:52
你的外部时钟是12mhz的吗?对于大部分指令, 执行时间为一个机器周期, 即12个时钟周期。举个例子, 如果是12mhz的话, 相当于一条指令的执行时间为12*(1/12mhz)即1us。你把它带到你的延迟函数就明白是延迟多久了追问谢谢
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
正方形一边上任一点到这个正方形两条对角线的 |
阴历怎么看 ? |