我估计,那是用来作时间间隔控制。while(--a); 是循环50000次,当a 变0时,while 结束。
为何定得如此大,是因为空循环速度很快,只有循环很多次才能获得足够长的时间间隔。
a=50000; while(--a);
第2个 while(--a); 似乎有问题,死循环。是不是前面漏了另一个 a=50000;
while(a--) 的意思是:当a--=0时(为假时)不执行下面的语句,当a--!=0时(为真时)就执行下面语句.
执行完,又进行判断.
a 的大小随意你定的.例子是做一个延时作用.
当50000减到0,就不再执行p1_1=0了,
这可根据你的晶振来设定你的时间.
在单片机编程中,为了控制文字显示或者处理速度,用一个while循环来延时,如
...
a = 50000;
while(--a);
....
当a自减到0时,while语句判断失败,循环终止。程序执行到下一条语句。
您给出的代码段里,第二个while(--a);开始之前,没有重新给a赋值,因此第二个while(--a)是不会终止的。
a定义大就是让它减减的,--a 表示在while里边每循环一次a就减1一次。
while(--a);就是为了延时,a不停减1,直到为0.数值越大(最大到65535)延时时间越长。