请问单片机延时怎么算?

来源:百度知道 编辑:UC知道 时间:2024/06/29 21:11:34
在看C51时用到延时程序时总会给一些循环语句。
例如:for(i=8;i>0;i--)
for(j=0;j<124;j++);
请问执行一条循环语句是多少时间?中间的数学换算公式应该是怎么样的?谢谢。

语言的运行时间不好计算,你要用汇编的才能精确的计算时间。汇编的前提是没有开中断才能精确计算间间
如果汇编 WHILE (TIME--) 为2个机器周期
2M
可以认为延时时间 = TIME * 250 ns
12M 就是TIME * 250/6 ns
24M 就是TIME * 250/12 ns

6MHZ晶振延时X毫秒的子程序
yanshi(uint x)
{
uint i;
uchar j;
for(i=0;i<x;i++)
{
for(j=0;j<124;j++)
}
}

keil c51 可以 软仿真 ,有跑表 ,可以看的呀v

还有 ,可以看一下对应的汇编窗口,由C生成的ASM,一目了然

这种方法是软件延时方法,延时不精确。单片机内部一般都提供定时中断,这种方法是硬件延时的方法,具体延时多长时间要看单片机的晶振频率以及内部某些寄存器的设置,看看定时中断那章就明白了,不难,加油。。。