微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 关于89c52的延时函数,怎么能大概算出延时的时间呢

关于89c52的延时函数,怎么能大概算出延时的时间呢

时间:10-02 整理:3721RD 点击:
很多种延时函数,我只知道有延时效果,不知道具体延时的时间,比如
void delay(uint x)
{
  uint i,j;
  for(i=x;i>0;i--)
         for(j=110;j>0;j--);
}
我不知道设置x为多少时,时间为一秒
再比如
uchar i;
i=70;       
while(i--);//延时多少呢?
真是搞晕我了。,求助啊 ,大神们。感激不尽啊
       

用keil自己测试啊,仿真的那个 。

这个根据晶振,大概计算一下就可以了
晶振为11.0592MHz,cpu空循环110次 ,大概是1毫秒
设置x为1000,就是1秒

谢谢 我试试去 ,

秒懂,谢谢啊,,,,,,

这个要看系统的时钟以及编译器编译出来的汇编代码才能精确计算;
如果变量是uchar类型,汇编后一般是使用DJNZ指令;
如果变量是int类型,情况就比较复杂一些;
你可以通过调试时的反汇编窗口查看。

把你写的程序编译后  进入调试模式,设置断点 ,可以精确的知道延时函数运行了多长时间  精确到小数点后9位~

算出来的不准确    一般需要翻译成汇编语言之后再拿晶振算

谢谢大家热心的解答

需要精确延时的,要使用定时器

需要精确延时的,要使用定时器

不知道怎么用啊
。求指点?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top