问题:单片机的P2.0引脚开关,P1口接发光二极管的阴极,当开关闭合时,发光二极管实现流水灯点亮(8个灯由下而上),当开光断开时,发光二极管实现流水灯点亮(由上而下)
我的程序:#include<reg51.h>
#include<intrins.h>
#define u8 unsigned char
#define u16 unsigned int
#define LED P1
void delay (u16 i)
{
while (i--);
}
void main ()
{
u8 a;
P1=0x00;
P2=0xff;
while(1)
{
if(P2^0==1)
{
LED=0x7f;
delay(5000);
for(a=0;a<7;a++)
{
LED=cror(LED,1);
delay(5000);
}
}
if(P2^0==0)
{
LED=0xfe;
delay(5000);
for(a=0;a<8;a++)
{
LED=crol(LED,1);
delay(5000);
}
}
}
}
程序运行起来没有报错,但是把它放到仿真软件里那个流水灯的顺序就是从下到上然后从上到下,p2口的开关按不按都是一样的,这就很离谱,就像是它跳过了我的if语句一样,不管p2口咋样,它运行他的。仿真图的话就是一个c51然后p1接八个灯(最普通的流水灯),p2.0接一个开关并接地。