我在学习用proteus仿真时,写了一个按键控制流水灯移位的程序,但是在执行程序的时候,只有第一次按键是有效的,之后按键便不起作用了。
代码如下:
#include <reg51.h>
#include <stdio.h>
void delay_ms(unsigned int ms)
{
unsigned int i,j;
for(i=0;i<ms;i++)
for(j=0;j<120;j++)
{;}
}
unsigned char a;
void main(void)
{
P0=~0x01; //低电平有效,亮第一个灯
while(1)
{
if((P1&0x02)==0)
{
delay_ms(10);
while((P1&0x02)==0);
delay_ms(10);
a++;
if(a>=8)
a=0;
P0=~(0x01<<a);
}
if((P1&0x01)==0)
{
delay_ms(10);
while((P1&0x01)==0);
delay_ms(10);
if(a==0)
a=7;
else
a--;
P0=~(0x01<<a);
}
}
}
Proteus仿真电路图如下: