标题: 奇怪C语言程序问题,条件不成立了为什么老在循环,那出错了? [打印本页]

作者: 鬼推磨    时间: 2022-6-13 12:43
标题: 奇怪C语言程序问题,条件不成立了为什么老在循环,那出错了?
KEY1是个指示灯
KEY2是个按钮开关
每扫描按钮开关按15下后,指示灯闪一下,
但下面代码下载单片机测试,按了几下按钮后,也加了延时消抖,没有按到15下,
指示灯就一直交替闪,它不跳出了,不往下面代码走了。
z=0;都清零了。运行一次。就不会再满足z==15这个条件了,
就不会在第一个IF语句里循环了。不知道为什么、。太奇怪了


void main()
{        
        KEY1=1;
        while(1)
        {
               
//////////老在这段循环///////////////
if(z==15)        
{
KEY1=0;
delayms(300);300毫秒延时
KEY1=1;
delay1s(1);//1秒延时
z=0;
}
////////////////////////////////

if(KEY2==0)
        {
        delayms(10);
        if(KEY2==0)
    {
z++;
delayms(100);                                                                 
}
}
}
}


作者: 天风情    时间: 2022-6-13 14:39
先把下面的给屏蔽了,只保留你要测试的,一点一点测试
作者: dreaman    时间: 2022-6-13 14:44
是不是因为z没有初始化
另外两个if语句是不是得上下颠倒一下
小白瞎说的
作者: wulin    时间: 2022-6-13 14:44
要有按键松手检测
void main()
{        
        KEY1=1;
        while(1)
        {
                if(z==15)
                {
                        z=0;
                        KEY1=0;
                        delayms(300);//300毫秒延时
                        KEY1=1;
//                        delay1s(1);//1秒延时
                }
                if(KEY2==0)
                {
                        delayms(10);
                        if(KEY2==0)
                        {
                                z++;
//                                delayms(100);
                                while(!KEY2);
                        }
                }
        }
}

作者: glinfei    时间: 2022-6-13 15:17
程序不全,单纯这些,不应该出现你说反复亮灯的问题。
作者: 1956195761    时间: 2022-6-13 15:21
没有初始化
作者: 鬼推磨    时间: 2022-6-13 16:46
wulin 发表于 2022-6-13 14:44
要有按键松手检测
void main()
{        

你这可以。解决了我的问题。谢谢




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1