打印
[STC单片机]

长按进行掉电唤醒怎么实现

[复制链接]
2380|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
令界剑|  楼主 | 2017-3-31 11:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我将一个按键接到单片机的外部中断0接口,我之前是长按掉电短按唤醒的,但是我发现,长按掉电了,按键一抖动马上就被唤醒,于是我想让按键长按再唤醒,非长按继续掉电,想了半天也没想到好的实现方法。大家有没有什么好的办法。

相关帖子

沙发
NE5532| | 2017-3-31 13:42 | 只看该作者
你一开始“假唤醒”,用软件持续检测有按键在真的醒过来就是了啊。

使用特权

评论回复
板凳
令界剑|  楼主 | 2017-3-31 14:54 | 只看该作者
本帖最后由 令界剑 于 2017-3-31 15:01 编辑
NE5532 发表于 2017-3-31 13:42
你一开始“假唤醒”,用软件持续检测有按键在真的醒过来就是了啊。

假唤醒我应该在哪处理比较好
 else if(key_scan == L_KEY7)        //按键7长按进入掉电模式
        {
                key_scan = N_KEY;                                        //清键值
                Display_close();                                        //关闭数码管
                LED1 = 1;                                                                        //关闭LED1
                LED2 = 1;                                                                        //关闭LED2
                BEEP = 1;                                                                        //关闭蜂鸣器
                PCON=0x02;                                                                //进入掉电模式:1点

使用特权

评论回复
地板
令界剑|  楼主 | 2017-3-31 15:11 | 只看该作者
本帖最后由 令界剑 于 2017-3-31 15:13 编辑
令界剑 发表于 2017-3-31 14:54
假唤醒我应该在哪处理比较好
这个代码框不会用,复制了有缺失的。                                                               
else if(key_scan == L_KEY7)        //按键7按下进入掉电模式
        {
                key_scan = N_KEY;                                        //清键值
                Display_close();                                        //关闭数码管
                LED1 = 1;                                                                        //关闭LED1
                LED2 = 1;                                                                        //关闭LED2
                BEEP = 1;                                                                        //关闭蜂鸣器
                PCON=0x02;                   //掉电模式:1点

                Delay_ms(1000);        //如果按键7再次按下,单片机唤醒程序开始从这里执行,延时,然后检测按键
                                                  //短按就继续掉电,长按没做处理,如果下一次按键按下了,程序就会从2点开始执行没有进行按键检测而直接唤醒
                                                  //要是在2点后面再加按键检测就会没完没了,然后我就卡在这了,脑子转不过来,想问下“假唤醒”应该怎么处理好点。
                if(KEY7)
                {
                  PCON=0x02;           //掉电模式:2点  
                 }
         }



使用特权

评论回复
5
NE5532| | 2017-3-31 15:50 | 只看该作者
用标志传出来做,不要再想在的架构上去改了,太乱。

使用特权

评论回复
6
coody| | 2017-3-31 16:24 | 只看该作者
简单的功能想复杂了。长按后提供一个关机的键码,进入关机流程,各种外设关电后,判断按键是否释放,没释放,就等释放,之后睡眠。

使用特权

评论回复
7
渔夫的烟斗| | 2017-10-27 11:02 | 只看该作者
空闲模式下,单片机的ADC是怎么进行工作的?

使用特权

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

本版积分规则

27

主题

137

帖子

2

粉丝