int main(void)
{
int a,b;
a=0;b=0;
delay_init();
LED_Init();
KEY_Init();
LED0=0;
while(1)
{
Show_Number(a,b);
if(KEY_Scan(0)==1)//如果KEY1被按下
{
a+=1;
LED0=1;
delay_ms(100);
LED0=0;
}
else if(KEY_Scan(0)==2)//如果KEY2被按下
{
b+=1;
LED0=1;
delay_ms(100);
LED0=0;
}
//else continue;
}
}
单片机为什么进不了这个else if???
按KEY2完全没反应,按KEY1就正常
如果把if的条件换位KEY_Scan(0)==2,else if 的条件换为KEY_Scan(0)==1,那么就只有KEY2正常
求问!
先把KEY_Scan(0)赋值给一个变量,再用变量判断
要让KEY_Scan(0)每次循环只读取一次
定义一个变量,在if前面获取KEY_Scan(0)的值,看看究竟是什么值
while (1) {
Show_Number(a, b);
int k = KEY_Scan(0);
if (k == 1) //如果KEY1被按下
{
a += 1;
LED0 = 1;
delay_ms(100);
LED0 = 0;
}
else if (k == 2) //如果KEY2被按下
{
b += 1;
LED0 = 1;
delay_ms(100);
LED0 = 0;
}
//else continue;
}
这只有一种可能就是你的KEY_Scan(0)/KEY_Scan(1)始终返回1,这两个函数是本地变量还是实时从硬件读取的信号量?如果是本地变量确认变量是否已经初始化成确定值
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y
C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html
C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html