是编写的子函数有问题,比如说你这个吧
void run0() //子函数,这里没有问题
{
while(1)
{
P0=0x00;
delay(500);
P0=0xff;
delay(500);
}
在这里面,你的“while(1)”这个条件恒为真,所以当你按下第一个按键并进入到某一个LED的子程序中时,这个子程序的while一直为真,所以这个子程序是不会结束的,所以就不会再去响应你的下一个按键
P1=0xff;
state=P1;
switch(state)
{
case 0xfe: run0();break;
case 0xfd: run1();break;
case 0xfb: run2();break;
case 0xf7: run3();break;
default:state=0xff;break;
}
你的state都在这里被写死了~你怎么执行别的么~
P1=0xff;
state=P1;这句~
state可以使char吗,不应该是unsigned char 么~