找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机掉电后唤醒的问题

[复制链接]
跳转到指定楼层
楼主
ID:86421 发表于 2019-9-2 08:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用STC12C5616AD做了一个时钟,想法是让单片机定时进入掉电模式,然后利用DS3231的INT/SQW定时输出通过单片机的外总中断0(P3.2)来唤醒掉电的单片机而使时钟继续正常工作。现在的问题是:能进入掉电模式,也参通过外总中断唤醒,但只是一闪就又停了。如果把中断子程序中的“I2CWrite(DS3231_STATUS,0x00);”去掉就能够正常唤醒工作。求助:问题出在哪?如何解决?
......
        while (1)         //主循环
                {
                       
                        if(ReadTimeFlag==1)  //读取时间
                                {
                                        ReadTimeFlag=0;
                                        Readtime();
                                }
                                Scan_Key();                               

                }
}
......
/*------------------------------------------------
        中断0开启  初始化
------------------------------------------------*/

void Alarm_Int0_Init() //中断0开启
{
        EA = 1;
        EX0 = 1;
        IT0 = 0;//0电平的触发方式,1下降沿触发
}
/*------------------------------------------------
        中断子程序
------------------------------------------------*/
void Alarm_Int0() interrupt 0
{
        PCON = 0x00;
        I2CWrite(DS3231_STATUS,0x00);        //清DS3231内部闹钟标志位.状态寄存器
}
......
                                        if(hour==23&&min==00&&sec==00)  //关机
                                        {
                                                PCON = 0X02;                                               
                                        }
......
void InitDS3231()  //初始化
{
        SCL=1;
        delayus(5);
        SDA=1;
        delayus(5);
        I2CWrite(DS3231_AL1DAY,0x81);        //A1M4置位,时分秒匹配时闹钟响应
        I2CWrite(DS3231_AL2DAY,0x81);        //A2M4置位,时分匹配时闹钟响应
        I2CWrite(DS3231_STATUS,0x00);        //32KHZ输出禁止,闹钟标志位清零
        I2CWrite(DS3231_CONTROL,0x07);        //中断允许,闹钟1和2打开
               
        I2CWrite(DS3231_AL1HOUR,0x06);  //开机一:时
        I2CWrite(DS3231_AL1MIN,0x00);  //开机一:分
        I2CWrite(DS3231_Al1SEC,0x00);  //开机一:秒
       
        I2CWrite(DS3231_AL2HOUR,0x17);  //开机二:时
        I2CWrite(DS3231_AL2MIN,0x30);  //开机二:分
}

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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