标题:
单片机代码 为什么按第三次K1的时候没有反应?
[打印本页]
作者:
umasouye
时间:
2023-4-22 12:06
标题:
单片机代码 为什么按第三次K1的时候没有反应?
大哥们,帮看下这段代码,为什么按第三次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();
}
}
作者:
zhuls
时间:
2023-4-22 15:23
moshi 的赋值范围是多少?0-3吗?那就moshi ++; moshi =moshi %4;
另外moshi =0是什么情况?
作者:
wulin
时间:
2023-4-22 16:09
void key_baihei_scan()
{
if(!K1) //如果检测到低电平,说明按键按下
{
Delayms(10); //延时去抖,一般10-20ms
if(!K1) //再次确认按键是否按下,没有按下则退出
{
while(!K1);//如果确认按下按键等待按键释放,没有则退出
moshi++;
if(moshi>3)
{
shuzhi=0;
}
if(moshi == 0)
{
//
}
if(moshi == 1) //静态动画模式
{
shuzhi=shuzhi+1;
}
if(moshi == 2) //静态动画模式
{
shuzhi=shuzhi+1;
}
if(moshi == 3) //静态动画模式
{
shuzhi=shuzhi+3;
}
}
}
}
作者:
fushunwang
时间:
2023-4-22 18:04
程序需要在按下三次按键后对moshi初始化,否则三次按键后这个程序没有反应。 if(moshi == 2) //静态动画模式 { shuzhi=shuzhi+2; } if(moshi == 3) //静态动画模式 { shuzhi=shuzhi+3; }其每次响应按键后需要加shuzhi==0;或改为 if(moshi == 2) //静态动画模式 { shuzhi=shuzhi+2; } if(moshi == 3) //静态动画模式 { shuzhi=shuzhi+1; },三次按键响应后初始化shuzhi==0
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1