#include<regx51.h>
#include<intrins.h>
void delay(unsigned int xms) //@11.0592MHz
{
unsigned char i, j;
while(xms--)
{ _nop_();
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
}
}
void main()
{
unsigned char lednum=0;
while(1)
{
if(P3_1==0)//该条件语句是判断k1是否按下,判断应该用==号,而我用成了=号。下面while同理。
{ //曾将if条件语句下面的花括号省略了,结果功能不能正常执行,加上就没有问题,还没有想明白这是因为什么,这个程序到底怎么执行的。
delay(20);//延时消抖
while(P3_1==0);//再次判断K1是否按下,如果按下了,那么P3_1=1,为假。即结束while循环。
lednum++;//二进制加法 0000 0001 ,0000 0010 , 0000 0011 ,0000 0100 ,看出led亮灭高低电平刚好相反。
P2=~lednum;
}
}
}
关于这个程序,第一个问题就是把判断的==号,别用成了=号。写程序的时候犯了这样的错。第二个问题就是主函数中的if条件语句,刚开始把下面的花括号省略了,程序没有实现想象中的功能,加上花括号就好了。但是还是没有想明白这个花括号加不加程序到底是怎么执行的,问什么会出现这种问题,有大神吗?可以帮忙解答一下嘛?