标题: 求大神帮分析单片机按键程序(我是菜鸟) [打印本页]

作者: barret.zhang    时间: 2019-8-22 15:13
标题: 求大神帮分析单片机按键程序(我是菜鸟)
void KEY_SCAN()
{
            if(KEY==0)
            {
                      if(++COUNT > 50)
                      {  
                                 COUNT = 0;
                                  if(FLAG_KEY==0)
                                   {
                                    
                           FLAG_KEY=1;
                           LED=0;   //低电平亮



                                }
                      }
            
            
            }
            else
            {
                      FLAG_KEY = 0;
        COUNT = 0;

            }

}

我的按键程序是这样子的
仿真的时候没有问题,将
程序烧录到板子就有问题了
现象是:按键一直按着灯才会亮,不懂为什么会这样


作者: 青春无悔亦有情    时间: 2019-8-22 15:59
你这不全啊,看不出来是在哪里灭灯的
作者: wulin    时间: 2019-8-22 16:23
改成这样试试
void KEY_SCAN()
{
        if(KEY==0)
        {
                if((++COUNT>=100)&&(FLAG_KEY==0))
                {  
                        FLAG_KEY=1;
                        EDL=~EDL;   //低电平亮
                }
        }
        else
        {
                FLAG_KEY=0;
                COUNT=0;
        }
}
作者: 没有你    时间: 2019-8-22 16:49
你按着按键,总是会进入if(KEY==0),多次进入后,会进入if(++COUNT > 50),然后会进入 if(FLAG_KEY==0),灯就亮了。如果没有按下按键,会进入 else语句。
作者: hantu    时间: 2019-8-22 23:59
你这按键函数写得不行啊,只要放开按键它就没法累加count呢,当然就不亮了
作者: barret.zhang    时间: 2019-8-23 12:56
wulin 发表于 2019-8-22 16:23
改成这样试试
void KEY_SCAN()
{

这样的烧录进51单片机就没有啥问题,烧到到OTP的就有问题了!!!!
是啥问题呢????
作者: 悲喜卒读    时间: 2019-8-23 15:19
改成这样试试
作者: 悲喜卒读    时间: 2019-8-23 15:19
void KEY_SCAN()
作者: 悲喜卒读    时间: 2019-8-23 15:20
{if(KEY==0)}
作者: wulin    时间: 2019-8-23 16:10
barret.zhang 发表于 2019-8-23 12:56
这样的烧录进51单片机就没有啥问题,烧到到OTP的就有问题了!!!!
是啥问题呢????

软件都是以硬件条件为基础编写的,不同的硬件条件要达到相同的目的,软件往往不同。你的实验板电路是什么样?不了解硬件谈软件是纸上谈兵。
作者: mengzhixinheng    时间: 2019-8-24 07:51
逻辑错误,仔细分析




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