单片机的延时程序

来源:百度知道 编辑:UC知道 时间:2024/05/05 19:13:06
在单片机中,经常能用到各种延时程序,如:
void mDelay(unsigned int Delay)
{ unsigned int i;
for(;Delay>0;Delay--)
{ for(i=0;i<124;i++)
{;}
}
}
但是怎样知道,它延时了具体多少时间呢?
我一般都是用别人编好的

执行空语句执行124次,大概就能延时到1秒.不是很准的。

如要算的话:

比如51,mdelay函数想延时1ms,而执行for(i=0;i<124;i++),假设4个机器周期,每个机器周期时长为[12*(1/晶振频率)秒],若晶振为6MHz时,每个机器周期为2us,这样124*4*2是992us,加上for(;Delay>0;Delay--)需要的8us,正好延时1ms

(1)这没有公式.大都用示波器.可软件仿真的方法确定N的值..
(2)别人已经测试通过了.就放心的用吧.

其实满足要求就行了
具体多少你可以很容易的测试
1。在KEIL软件里,你可以设置“断点”,判断程序的执行时间
2.也可执行“反汇编”看汇编代码的条数,然后根据晶振来算时间

这点还是去看看汇编程序吧
弄明白了
C的迎刃而解