打印

大家看看这是什么情况?

[复制链接]
1045|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ningling_21|  楼主 | 2013-3-22 21:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
MCU需检测一个引脚电平,正常为低低电平,如果为高表示产生告警,显示告警,并记录告警的时间存入EEPROM。
程序:
if(power_pin==Nomol)                                          //引脚正常
{
     if(lcd_disp_stat_back==2 && alm_value==0)
                {
                         lcd_disp_stat_back=0;                 //返回正常状态
                        flag_power_off_alm=0;             //告警撤消,下次告警可继续产生记录
               }
}
else if(Power_check==POWER_OFF)                 //引脚告警
{
    if(lcd_disp_stat_back==0)                             //如果为待机状态,则转为告警状态
                {
                         lcd_disp_stat_back=2;                  //显示告警状态
                        if(        flag_power_off_alm==0)   //如果当前告警记录未产生,则产生记录并储存
                        {
                               flag_power_off_alm=1;      //防止重复产生记录信息
                               。。。。。。。。              //产生记录,并储存
                        }
                }
}

现在的问题是:如果引脚变高,本来只产生一个告警记录就够了,但现在有告警时总会产生2个相同的告警记录,什么原因?
MCU;STC11F60

相关帖子

沙发
uet_cache| | 2013-3-22 23:58 | 只看该作者
没做消抖?

使用特权

评论回复
板凳
ayb_ice| | 2013-3-23 08:03 | 只看该作者
static bit b;

void alarm(void)
{
    if(power_pin != b && power_pin == ALARM){
          ....;   // 记录
    }

     b == ALARM

}

使用特权

评论回复
地板
ningling_21|  楼主 | 2013-3-23 22:13 | 只看该作者
uet_cache 发表于 2013-3-22 23:58
没做消抖?

调用这个子程序会间隔一定时间,所以这种情况下消抖可以不要...

使用特权

评论回复
5
ningling_21|  楼主 | 2013-3-26 22:33 | 只看该作者
ayb_ice 发表于 2013-3-23 08:03
static bit b;

void alarm(void)

问题已解决。

中间的记录存储删掉就可以了,记录在别处存储.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5013

主题

17741

帖子

51

粉丝