3个按键输入单片机IO口 控制其它两个IO口状态

我现在用单片做个东西 基本过程是 我给三个按键ABC输入到单片机的三个IO口 当A=0时按下时 另外的IO口D输出高电平D=1一直保持 ,此时我检测B如果=0按下时;IO口E输出电平,此时D=1,E=1且保持住; 如果我此时再次按下B按键时 E的状态应该发生翻转及变成D=1;E=0;若我按下C时 使D=0;且E=0 我写的程序无法使E=!E 请帮忙看看
sbit S0=P2^0;
sbit S1=P2^1;
sbit S2=P2^2;
sbit K0=P1^0;
sbit K1=P1^1;

uchar temp;
void Delay(uchar z) //延时函数
{
uchar x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

void main(void)
{
// P0=0xff;
S0=1;
S1=1;
S2=1;
P1=0x00;
// P2=0x00;
Delay(5);
while(1)
{
if(S0==0)
{
Delay(5);
if(S0==0)
{
K0=1;
K1=0;
while(S1&&S2);
}
}

if(K0==1)
{
if(S1==0)
{
Delay(5);
if(S1==0)
{
K0=1;
K1=1;
while(S0&&S2);
}
}
}

if(K1==1)
{
if(S1==0)
{
Delay(5);
if(S1==0)
{
K0=1;
K1=0;
while(S0&&S2);
}
}
}
}

备注 次程序测试下 :发现 D输出的状态状态正常 但是E=1高电平 一直保持 直至按下C按键(S2) 原因是程序中 B键(S1)按下时 while里边一直是while(1)跳不出循环语句造成 请问该如何修改程序 (此程序省略了头文件和宏定义)我的QQ 450792440 谢谢

第1个回答  2012-06-18
这个简单我来帮你///////