void Delay_ms(void)
{
unsigned char m,n,s;
for(m=20;m>0;m--)
for(n=20;n>0;n--)
for(s=248;s>0;s--);
}
我结合了你的for循环软件延时来给你简单讲解一下,软件延时是单片机在执行一条空指令耗费的时间,当程序执行到Delay_ms();延时后,先执行M减一次for(m=20;m>0;m--) 接着再执行N减一次for(n=20;n>0;n--),最后是 for(s=248;s>0;s--);
这是一个嵌套语句
for(m=20;m>0;m--)
m每减去一次;
for(n=20;n>0;n--)
N要执行20次 n-到0为止
for(s=248;s>0;s--);
n每减去一次就执行一次 for(s=248;s>0;s--);
m减到0就退出循环,就在这段时间里耗费的时间称之为延时。
这个是按照时钟周期来计算的,
12M晶振: 仿真计算时间199665 199ms 不到200ms
温馨提示:答案为网友推荐,仅供参考