博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
精确软件延迟
阅读量:4491 次
发布时间:2019-06-08

本文共 587 字,大约阅读时间需要 1 分钟。

在精确延时的计算当中,最容易让人忽略的是计算循环外的那部分延时,在对时间要求不高的场合,这部分对程序不会造成影响.

  一. 500ms延时子程序程序:.(晶振12MHz,一个机器周期1us.)

 

  void delay500ms(void)

  {

  unsigned char i,j,k;

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

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

  for(k=81;k>0;k--);

  }

 

  计算分析:

  程序共有三层循环

  一层循环n:R5*2 = 81*2 = 162us DJNZ 2us

  二层循环m:R6*(n+3) = 202*165 = 33330us DJNZ 2us + R5赋值 1us = 3us

  三层循环: R7*(m+3) = 15*33333 = 499995us DJNZ 2us + R6赋值 1us = 3us

  循环外: 5us 子程序调用 2us + 子程序返回 2us + R7赋值 1us = 5us

  延时总时间 = 三层循环 + 循环外 = 499995+5 = 500000us =500ms

  计算公式:延时时间={[(2*R5+3)*R6+3]*R7+5}*指令周期

转载于:https://www.cnblogs.com/wangf/p/3200776.html

你可能感兴趣的文章
windows pm2 开机启动
查看>>
Flask - 特殊装饰器 和 Flask工作结构模式(FBV, CBV)
查看>>
node.js环境搭建以及入门级hello程序
查看>>
LightOJ1282 - Leading and Trailing(快速幂+数学)
查看>>
【mysql】关于checkpoint机制
查看>>
nginx总结
查看>>
如何设定ASH buffer大小
查看>>
改变调用函数的this指针方向
查看>>
【转】mq
查看>>
Java基础知识学习07-抽象类、接口、多态
查看>>
Oracle学习笔记之七(用户管理、角色与权限、导入导出等)
查看>>
linux如何挂载windows下的共享文件
查看>>
常用正则表达式
查看>>
C++学习笔记(IV) 之 表达式
查看>>
Houdini 节点参数读取输入节点的数据列表
查看>>
初识Linq to Entity
查看>>
Linux vmstat命令实战详解
查看>>
FastDFS在centos上的安装配置与使用
查看>>
HDU 1709 The Balance
查看>>
2016/7/7 设置wamp2.5 mysql密码 重点是mysql版本
查看>>