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
1楼-- · 2019-07-16 12:12
while(--t);是一个空循环,函数Delay执行这个空循环来达到延时的效果。空循环的作用就是延时,让CPU运算一大堆无用的自减运算,从而达到延时的效果。
比如Delay(10000),执行减法10000次。delay(10000)里面的10000就是传给delay里的t
但是这个延时效果是不精确的,取决于计算机的运行速度。
如果不延时的话,LED的闪烁频率太快,肉眼根本无法分辨。
tbingo
2楼-- · 2019-07-16 14:55
 精彩回答 2  元偷偷看……
liutubao
3楼-- · 2019-07-16 19:37
delay();函数如果没有延迟,就一闪而过了,相当于没有发生
殷高旺
4楼-- · 2019-07-16 23:40
路过
郑团伟
5楼-- · 2019-07-17 00:27
如果没有while(--t)就相当于没有延时
殷高旺
6楼-- · 2019-07-17 02:10
简单的说就是个一直判断while的真假来延时

一周热门 更多>