关于延时程序的求助
void delay(uint i) { for(;i!=0;i--); } void delay(uint i) { while(i--); } void delay(uint i) { while(--i); } 求大侠帮忙给个以上三个us级别延时函数的精确度分析,谢谢了!
void delay(uint i)
{
for(;i!=0;i--);
}
oid delay(uint i)
{
while(i--);
}
void delay(uint i)
{ while(--i); }
你的问题,真若有大神也难以回答。
延时函数很难做大精确延时,延时时间的长短取决你CPU的主频和指令周期。
一般的计算延时函数时间的办法:
看看你的代码反汇编成汇编语言的时候,共有几条指令;
你单片机的主频是多少,再对照体系结构计算出每条指令需要几个指令周期,每个指令周期是多长时间。
知道这些才能知道精确的延时。
或者你用示波器去看个大概时间也可以。
精确地定时都是用定时器的,如果是调整时序的时候用到延时,那么精度是不需要这么高的。
{
for(;i!=0;i--);
}
oid delay(uint i)
{
while(i--);
}
void delay(uint i)
{ while(--i); }
你的问题,真若有大神也难以回答。
延时函数很难做大精确延时,延时时间的长短取决你CPU的主频和指令周期。
一般的计算延时函数时间的办法:
看看你的代码反汇编成汇编语言的时候,共有几条指令;
你单片机的主频是多少,再对照体系结构计算出每条指令需要几个指令周期,每个指令周期是多长时间。
知道这些才能知道精确的延时。
或者你用示波器去看个大概时间也可以。
精确地定时都是用定时器的,如果是调整时序的时候用到延时,那么精度是不需要这么高的。
共10条 1/1
1
跳转至
页