怎么计算延时时间?

tyhope 2009-12-02 11:49:27
DEL:MOV R7,#200
DEL1:MOV R6,#125
DEL2:DJNZ R6,DEL2
DJNZ R7,DEL1
RET

怎么计算延时时间,希望有详细过程。
...全文
335 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuajuan871207 2009-12-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 pingminglang 的回复:]
查了表,好像有两个机器周期的指令弄错了,修正一下

    DEL:MOV  R7,#200  // 1个机器周期  执行1次    时间:1×1
      DEL1:MOV R6,#125  //1个机器周期 执行200次    时间:1×200
      DEL2:DJNZ R6,DEL2  //2个机器周期 执行200×125次  时间:2×200×125
            DJNZ R7,DEL1  //2个机器周期 执行200次    时间:2×200
      RET

  总的延时时间:(1×1+1×200+2×200×125+2×200)×2us=50601×2us=101.202ms
[/Quote]题目没有给出是在多少晶振下,如果是在12M的话一个机器周期就是1us,上述是在6M晶振下的延时
pingminglang 2009-12-03
  • 打赏
  • 举报
回复
查了表,好像有两个机器周期的指令弄错了,修正一下

DEL:MOV R7,#200 // 1个机器周期 执行1次 时间:1×1
DEL1:MOV R6,#125 //1个机器周期 执行200次 时间:1×200
DEL2:DJNZ R6,DEL2 //2个机器周期 执行200×125次 时间:2×200×125
DJNZ R7,DEL1 //2个机器周期 执行200次 时间:2×200
RET

总的延时时间:(1×1+1×200+2×200×125+2×200)×2us=50601×2us=101.202ms
pingminglang 2009-12-03
  • 打赏
  • 举报
回复
计算延时时间必须结合你所用的晶振的震荡频率,这里假设你所用的晶振的震荡频率是 12MHZ,那么在C51系列的单片机上一个机器周期就是 1us.
接下来你再查表得到每个指令执行所用的机器周期:

DEL:MOV R7,#200 // 2个机器周期 执行1次 时间:2×1
DEL1:MOV R6,#125 //2个机器周期 执行200次 时间:2×200
DEL2:DJNZ R6,DEL2 //2个机器周期 执行200×125次 时间:2×200×125
DJNZ R7,DEL1 //2个机器周期 执行200次 时间:2×200
RET

总的延时时间:(2×1+2×200+2×200×125+2×200)×2us=50802×2us=101.604ms

具体的结果不一定计算的对,反正是按着这么一个思路去做就是。



大熊猫侯佩 2009-12-03
  • 打赏
  • 举报
回复
不同hz的cpu不同,有时需要手动调整。
dbx12358 2009-12-03
  • 打赏
  • 举报
回复
要看每条指令的执行时间。都算进去。
tyhope 2009-12-02
  • 打赏
  • 举报
回复
不知楼上可以再说的详细吗?
能否把每一步的延时时间都写出,谢谢!
cnzdgs 2009-12-02
  • 打赏
  • 举报
回复
内层循环时间乘以循环次数再乘以外层循环次数,外层循环中其它代码的执行时间忽略不计。

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧