找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3491|回复: 3
打印 上一主题 下一主题
收起左侧

关于STC8G1K单片机唤醒后重新进入掉电模式的问题

[复制链接]
跳转到指定楼层
楼主
ID:728019 发表于 2021-1-19 16:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通电后进入掉电模式,电流大概4uA,
按键后,中断唤醒,电流大概30mA,
然后!!!!!
理论上讲这时候应该重新变成掉电模式的4uA
但是用万用表测电流发现,电流从30mA跳到28mA后,以0.1mA每秒的速度往下掉
这是为什么呀?

单片机源程序如下:
unsigned char key0 = 1;
unsigned char key1 = 1;
unsigned char key_tc = 1;
/**************中断******************/
void INT0_Routine()interrupt 0 //左边key0
{
        PCON = 0x00;
        key1 = 0;
}
void INT1_Routine()interrupt 2 //右边key1
{
        key0 = 0;
}
void INT3_Routine()interrupt 11
{
        key_tc = 0;
}
/**************主程序****************/
void main()
{

        P1M1 = 0xCF;  // 1.7,1.6,1.3,1.2,1.1,1.0高阻输入
        P1M0 = 0x00;  //
        P3M1 = 0x0C;  // key1和key2高阻输入
        P3M0 = 0x00;
        
        IT0 = 1; //使能INT0下降沿中断
        EX0 = 1; //使能INT0中断
        IT1 = 1; //使能INT1下降沿中断
         EX1 = 1; //使能INT1中断
        INTCLKO = 0x20; //使能INT3下降沿中断
        
        ES = 1;  //使能串口中断
        EA = 1;
        led = 1;
        PCON = 0x02; //掉电模式,低功耗模式

        while(1)
        {
          if(key_tc == 0)
           {
                         led = 0;
                         Delay30ms();         //按键防抖
       up();
                         read_id();
                         Delay30ms();
                         led = 1;
                         key_tc = 1;
                         PCON = 0x02;
                 }
                 if(key0 == 0)
           {
                         led = 0;
                   Delay30ms();         //按键防抖
       up();
                         Delay30ms();
                         led = 1;
                         key0 = 1;
                         PCON = 0x02;
                 }
                 if(key1 == 0)
           {
                         led = 0;
                         Delay30ms();         //按键防抖
       down();
                         Delay30ms();
                         led = 1;
                         key1 = 1;
                         PCON = 0x02;
                 }
        }
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:276663 发表于 2021-1-20 09:30 | 只看该作者
我记得说明书这样说,中断唤醒后,程序是从进入低功耗代码的下一句运行,而不是进入中断吧
回复

使用道具 举报

板凳
ID:401564 发表于 2021-1-20 09:36 | 只看该作者
通过中断唤醒之后,第一时间是进入中断
中断处理完成之后是返回到上次进入掉电模式的下一句运行
回复

使用道具 举报

地板
ID:276663 发表于 2021-1-21 09:34 | 只看该作者
IdeaMing 发表于 2021-1-20 09:30
我记得说明书这样说,中断唤醒后,程序是从进入低功耗代码的下一句运行,而不是进入中断吧

PCON = 0X02;下面记得放上两个_nop_();_nop_();说明书强调是先运行一个nop才进入中断。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表