大哥们,帮看下这段代码,为什么按第三次K1的时候没有反应,明明和前两次是一样的代码,是按键这里的问题吗
void key_baihei_scan()
{
if(!K1) //如果检测到低电平,说明按键按下
{
Delayms(10); //延时去抖,一般10-20ms
if(!K1) //再次确认按键是否按下,没有按下则退出
{
while(!K1)//如果确认按下按键等待按键释放,没有则退出
{
Delayus(50);
}
moshi = moshi+1;
if(moshi == 1) //静态动画模式
{
shuzhi=shuzhi+1;
}
if(moshi == 2) //静态动画模式
{
shuzhi=shuzhi+1;
}
if(moshi == 3) //静态动画模式
{
shuzhi=shuzhi+3;
}
}
}
}
void shuchu()
{
if(K1)
{
if(shuzhi==1)
{
for(layer=0;layer<8;layer++)
{
lie(~shuzua[layer*8+1],~shuzua[layer*8+3],~shuzua[layer*8+5],~shuzua[layer*8+7]);
lie(~shuzua[layer*8+0],~shuzua[layer*8+2],~shuzua[layer*8+4],~shuzua[layer*8+6]);
RCLK=0; //模拟锁存信号端口
nop_();
RCLK=1;
hansao(7-layer);
Delayus(10);
}
}
if(shuzhi==2)
{
for(layer=0;layer<8;layer++)
{
lie(~shuzub[layer*8+1],~shuzub[layer*8+3],~shuzub[layer*8+5],~shuzub[layer*8+7]);
lie(~shuzub[layer*8+0],~shuzub[layer*8+2],~shuzub[layer*8+4],~shuzub[layer*8+6]);
RCLK=0; //模拟锁存信号端口
nop_();
RCLK=1;
hansao(7-layer);
Delayus(10);
}
}
if(shuzhi==3)
{
for(layer=0;layer<8;layer++)
{
lie(~shuzuc[layer*8+1],~shuzuc[layer*8+3],~shuzuc[layer*8+5],~shuzuc[layer*8+7]);
lie(~shuzuc[layer*8+0],~shuzuc[layer*8+2],~shuzuc[layer*8+4],~shuzuc[layer*8+6]);
RCLK=0; //模拟锁存信号端口
nop_();
RCLK=1;
hansao(7-layer);
Delayus(10);
}
}
}
}
void main()
{
while(1)
{key_baihei_scan();
shuchu();
}
}
|