[国产单片机] 菜鸟问一个外部中断休眠和唤醒单片机的问题

[复制链接]
2374|11
 楼主| 刘力xin 发表于 2018-1-7 22:50 | 显示全部楼层 |阅读模式
请问各位大神,按键接外部中断0引脚,实现长按一下单片机进入掉电模式,再长按一下唤醒单片机,单片机在唤醒模式下短按一下执行其他功能。
ayb_ice 发表于 2018-1-8 08:45 | 显示全部楼层
进入时不用中断,睡眠前打开中断就可以了
changmingking 发表于 2018-1-8 12:55 | 显示全部楼层
正常工作时候检测IO的按键动作(此时复用口做普通I/O出入口)---->检测到长按操作---->开启该复用口的外部中断(可唤醒睡眠)功能,关闭显示输出/关闭MCU不用的模块功能---->执行低功耗指令---->等待外部唤醒---->开启IO功能,恢复一切要用的模块,回到正常工作模式---->循环
ningling_21 发表于 2018-1-8 14:23 | 显示全部楼层
唤醒一般不需长按
ZHNAGR 发表于 2018-1-10 11:42 | 显示全部楼层
唤醒一般是电平转换或者给个高低电平就行了。
 楼主| 刘力xin 发表于 2018-1-10 17:57 | 显示全部楼层
我是想用一个按键实现掉电,唤醒和输出脉冲模式切换3种功能,
可我编写的程序要么能掉电不能唤醒,要么能唤醒不能掉电,这是我的控制掉电和唤醒的程序

void INT0_t() interrupt 1
{
    ststic unsigned cha a=1;
    if(1==a)
    {
        delay(1000)
        iif(0==K)
        {
            a=0;
            PCON=0x02;
        }
    }
    else
    {
        delay(1000)
       iif(0==K)
        {
            PCON=0;
            a=1;
        }
    }
}

定义的K为P3.2,也就是外部中断0的管脚,,有什么问题吗,求大神们知指导一下啊
ayb_ice 发表于 2018-1-11 09:11 | 显示全部楼层
刘力xin 发表于 2018-1-10 17:57
我是想用一个按键实现掉电,唤醒和输出脉冲模式切换3种功能,
可我编写的程序要么能掉电不能唤醒,要么能唤 ...

怎么可以在中断里睡眠呢
这样需要更高优先级的中断才可以唤醒
 楼主| 刘力xin 发表于 2018-1-15 18:02 | 显示全部楼层
ayb_ice 发表于 2018-1-11 09:11
怎么可以在中断里睡眠呢
这样需要更高优先级的中断才可以唤醒

那您的意思是一键无法实现既能掉电又能唤醒吗?
ayb_ice 发表于 2018-1-16 08:36 | 显示全部楼层
刘力xin 发表于 2018-1-15 18:02
那您的意思是一键无法实现既能掉电又能唤醒吗?

当然可以
 楼主| 刘力xin 发表于 2018-1-16 11:25 | 显示全部楼层

void INT0_t() interrupt 1
{
    ststic unsigned char a=1;
    if(1==a)
    {
        delay(1000)
        iif(0==K)
        {
            a=0;
            PCON=0x02;
        }
    }
    else
    {
        delay(1000)
       iif(0==K)
        {
            PCON=0;
            a=1;
        }
    }
}

那我这个外部中断程序有什么问题吗
ayb_ice 发表于 2018-1-16 13:03 | 显示全部楼层
刘力xin 发表于 2018-1-16 11:25
void INT0_t() interrupt 1
{
    ststic unsigned char a=1;

你这样唤醒不了的,中断不可能中断自己
在主循环里去读按键,睡眠前开中断->按键唤醒,关中断->。。。
zqx1000 发表于 2018-4-10 19:32 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

19

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部