关于单片机C程序延时的问题如下程序。回答我两个问题哦~ 问题1: 200MS是怎么得来的?公式是什么样的

问题2:程序中的
for(i=10;i>0;i--)
for(j=31;j>0;j--)
for(k=147;k>0;k--);
这些 10 31 147 是干什么的 它们跟延时有什么关系呢?新手求指教
#include <REGX51.H>

void Delay200ms(void) //--- @12.000MHz ---
{
unsigned char i,j,k;

for(i=10;i>0;i--)
for(j=31;j>0;j--)
for(k=147;k>0;k--);
}

void main(void)
{
while(1)
{
P0_0 = 0; //--- P0.0输出低电平 ---
Delay200ms(); //--- 调用延时子程序 ---
P0_0 = 1; //--- P0.0输出高电平 ---
Delay200ms(); //--- 调用延时子程序 ---
}
}

这个延时程序和你单片机系统的晶振有关系,看程序注解搭配的是12MHZ的晶振,估计是经过模拟运行程序后才得到这个延时200MS的函数Delay200ms。

至于那三个for循环就是延时的关键,执行任意一条语句都是有微小耗时的,循环部分由于反复执行耗时就会相对很长,可以达到延时的效果,设定for的初始值10 31 147意义就在于确定循环的次数,也就可以调整延时的长短。

有问题追问我。追问

不懂啊

你好,你能告诉我 从第一个for语句如何执行到第三个for语句呢?
for(i=10;i>0;i--)
for(j=31;j>0;j--)
for(k=147;k>0;k--)

追答

我不知道你C语言有没有系统学过,学到什么程度,for循环是C语言很基本的内容啊

for(表达式1;表达式2;表达式3)
1是赋初始值;2是循环继续的判断语句;3是每次循环结束后执行的语句

追问

你好,我初学 嘿嘿,

刚学到语句

温馨提示:答案为网友推荐,仅供参考
相似回答