c51编程的一些问题

来源:百度知道 编辑:UC知道 时间:2024/07/02 16:11:55
我们经常会判断输入的状态,判断完程序继续往下走,在程序继续往下走的时候,状态又变化了,此时程序怎么运行
#include <AT89x51.h>
void main(void)
{
unsigned int a;
do
{
P1 = 0xFF; //关闭P1 上的LED
while(P3_7); //空语句,等待P3_7 按下为低电平,低电平时执行下面的语句
P1 = 0; //点亮LED
for(;a<60000;a++); //这也是空语句的用法,注意a 的初值为当前值
} //这样第一次按下时会有一延时点亮一段时间,以后按多久就亮多久
while(1); //点亮一段时间后关闭再次判断P3_7,如此循环
}
这是我看的一个程序,为什么例子中说这样第一次按下时会有一延时点亮一段时间,以后按多久就亮多久?

他说那句话的关键是a的初值的问题,第一次循环因为a<60000,所以你按键后松开,执行那段循环后灯才熄灭,“这样第一次按下时会有一延时点亮一段时间“。

注意那个循环里并没有给a赋值,所以第一次循环a=59999跳出for后就,第二次就不会执行那个循环了,也就是“以后按多久就亮多久“