51单片机一个程序问题

2019-07-16 07:13发布

实验名称:不同频率闪烁一个LED
#include<reg52.h>
sbit LED0=P0^0;
void Delay(unsigned int t);
void main (void)
{
unsigned char i;
while (1)
{
for(i=0;i<10;i++)
{
LED0=0;
Delay(10000);

LED0=1;
Delay(10000);
}
for(i=0;i<10;i++)
{
LED0=0;
Delay(60000);

LED0=1;
Delay(60000);
}
}
}

void Delay(unsigned int t)
{
while(--t);
}  
如果没有最后面那个whlile(——t)就不能正常运行,为什么?它的用途是?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
7条回答
assingle
2019-07-16 12:12
while(--t);是一个空循环,函数Delay执行这个空循环来达到延时的效果。空循环的作用就是延时,让CPU运算一大堆无用的自减运算,从而达到延时的效果。
比如Delay(10000),执行减法10000次。delay(10000)里面的10000就是传给delay里的t
但是这个延时效果是不精确的,取决于计算机的运行速度。
如果不延时的话,LED的闪烁频率太快,肉眼根本无法分辨。

一周热门 更多>