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

问题2:程序中的for(i=10;i>0;i--)for(j=31;j>0;j--)for(k=147;k>0;k--);这些1031147是干什么的它们跟延时有什么关系... 问题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(); //--- 调用延时子程序 ---
}
}
展开
 我来答
风林火陰山雷
2015-07-27 · TA获得超过1.1万个赞
知道大有可为答主
回答量:2569
采纳率:100%
帮助的人:1973万
展开全部
这个延时程序和你单片机系统的晶振有关系,看程序注解搭配的是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--)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式