STC89C52RC为什么掉电模式进不了 100

使用STC89C52RC学习掉电模式,编了一个小程序,但是开关关闭后掉电模式怎么也进不去,程序也修改N次了,还是不行,拜求大神给看看,谢谢!#include"STC89C... 使用STC89C52RC学习掉电模式,编了一个小程序,但是开关关闭后掉电模式怎么也进不去,程序也修改N次了,还是不行,拜求大神给看看,谢谢!
#include "STC89C52.H"
#include "intrins.h"
#define u8 unsigned char
#define u16 unsigned int
sbit R=P1^0; //红灯
sbit K=P3^3; //开关
sbit G=P0^3; //绿灯
u16 dscs;

void HX() interrupt 2 //外中断1唤醒单片机
{
PCON=0x00;
G=0; //进入中断后绿灯亮一下
ys1ms(200);
G=1;
}

void main() //主函数
{
dscs=0; //定时次数清零
IT1=1; //IT1下降沿触发
EX1=0; //INT1中断关闭
EA=1;
while(1)
{
dscs++;
if(K==0) //开关闭合
{
ys1ms(20);
if (K==0)
{
if (K==1) //开关断开,进入掉电状态
{
ys1ms(20);
if(K==1)
{
EX1=1; //开启INT1中断
EA=1;
_nop_();
_nop_();
PCON=0x02;
_nop_();
_nop_();
_nop_();
_nop_();
dscs=0;
EX1=0;
}
}
if (K==0 && dscs>=300 ) //开关闭合,一段时间后进入掉电状态
{
EX1 = 1; //开启INT1中断
R=0;
ys1ms(200);
R=1; //红灯亮一下
_nop_();
_nop_();
_nop_();
_nop_();
PCON=0x02; //进入掉电状态
_nop_();
_nop_();
_nop_();
_nop_();
dscs=0;
EX1=0;
R=0; //红灯亮一下
ys1ms(200);
R=1;
}
}
}
if (K==1 || dscs>=600 ) //开关闭合或者等待一段时间后进入掉电状态
{
EX1 = 1; //开启INT1中断
R=0; //红灯亮一下
ys1ms(200);
R=1;
_nop_();
_nop_();
_nop_();
_nop_();
PCON=0x02; //进入掉电状态
_nop_();
_nop_();
_nop_();
_nop_();
dscs=0; //dscs清零
EX1=0;
R=0; //红灯亮一下
ys1ms(200);
R=1;
}
}
}
ys1ms()程序没有放上去,编译没问题,百思不得其解。拜托大神给分析一下到底怎么回事。
开关接在外中断1引脚。断开以后工作正常,可以进入掉电模式。但是开关关闭以后就不行了,按道理下降沿触发的话,一直低电平也是可以的啊
展开
 我来答
匿名用户
2017-09-14
展开全部
空闲模式可以通过中断唤醒,掉电模式只可以通过外部中断唤醒。你可以把按键接在外部中断引脚,用按键触发外部中断唤醒单片机(在外部中断服务函数中添加PCON=0x00;)。在中断中将PCON清0,唤醒单片机。进入空闲模式或掉电模式,程序就不运行了,停止在你进入空闲模式或掉电模式处,待重新唤醒又从停止处继续运行。你做时钟,应该是用时钟芯片吧?你的芯片有纽扣电池供电,走时间和单片机没有什么关系,单片机只是将里面的时间读出来而已,到你唤醒单片机的时候读出来的时间还是正确的。
追问
你好,您没有看程序吧?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式