关于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--);//延时多少呢?
真是搞晕我了。,求助啊 ,大神们。感激不尽啊
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位~
算出来的不准确 一般需要翻译成汇编语言之后再拿晶振算
谢谢大家热心的解答
需要精确延时的,要使用定时器
需要精确延时的,要使用定时器
不知道怎么用啊
。求指点?