大哥們,幫看下這段代碼,為什么按第三次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();
}
}
|