• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

求高手教!

礼物 2014-11-15 浏览量:848

下面这个延迟时间怎么算的:

void delay()

    unsigned int i,j;

    for(i=100;i>0;i--)

        for(j=500;j>0;j--);

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 告诉你三个方法来计算此延时周期:

    1、根据单片机的机器周期来计算,首先要知道单片机执行一条指令用时多少?然后确定这个双循环函数用了多少个机器周期,空等待用了多少个周期,这个不同的单片机是不一样的,如何测算机器周期呢:在开发环境里面,编译代码,会出现对应这些C语言的汇编语言,汇编语言执行每个命令有多少周期都是能查到的,你根据汇编语言就能算出要多少个机器周期了,这样就能知道延时函数的时间了!这个方法比较麻烦,也比较准确!

    2、采用软件仿真的方法来计算:在开发环境下,加载这个延时代码,在语句前后插入断点,然后就能看到不同的运行时间,两者的差值就是延时时间了,这个方法简单易用,有误差!

    3、这个要借助示波器来实现了:在代码中,实现一个端口电平的翻转,然后加入这个代码的延时时间,用示波器测量高低电平的宽度,就是延时时间,这个精确度也很好,有示波器才能用!


    • 发布于 2014-11-15
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:4
  • 那要看你单片机每执行一条语句需要多少时间了
    • 发布于2014-11-15
    • 举报
    • 评论 0
    • 0
    • 0

  • 和晶振有关系           这个可以用KEIL仿真   方便  设置好晶振频率,然后仿真    就可以知道时间了  免得算  麻烦
    • 发布于2014-11-15
    • 举报
    • 评论 0
    • 0
    • 0

  • 其实很简单     上面说的有些过于复杂。   你只要选对晶振,用keil 仿真一下就可以找到时间了,何必那么麻烦。
    • 发布于2014-11-15
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

求高手教!