daiqihao 发表于 2014-6-19 16:03:12

请教大神,STC单片机掉电模式后怎么唤也醒不来,如何解决

写了个小程序测试掉电唤醒功能:
硬件平台:
MCU:STC11L02E    SOP20@7.3728MHz
P1.2接LED发光二极管
INT0 作掉电唤醒引脚
测试程序很简单,如下:

#include"STC11.H"       

//LED测试
sbit LED = P1^2;
//*********************************************************
//******主程序********
//*********************************************************
void main()
{
   unsigned char count=0;
   CLK_DIV=0x01;//时钟2分频 7.3728/2=3.6848MHz
   EX0 = 1;//INT0中断允许       
   IT0 = 1;//INT0下降沿中断
   EA=1;
    while(1)       
   {
      LED=~LED;
       delay_ms(50);
       LED=~LED;
       delay_ms(50);
       if(++count>=5) //当循环5次后进入掉电模式
      {
             count=0;
             PCON = 0x02;//进入掉电模式
             delay_ms(100);
      }
   }
}
====================
运行程序时,LED闪烁一会进入掉电模式,CPU不工作,LED全灭.此时如果INT0给一个低脉冲理应会唤醒CPU的,但实际CPU却一直在睡,唤不醒。是什么原因呢,程序应该是没问题的。

lusson 发表于 2014-6-19 16:21:13

中断程序呢?

daiqihao 发表于 2014-6-19 16:24:22

lusson 发表于 2014-6-19 16:21
中断程序呢?

如果外部中断只是用作唤醒作用的话那么对应的中断服务一定要写吗?如果不写程序跑飞了?

tam2907 发表于 2014-6-19 16:24:24

写一个空的INT0中断处理函数

lusson 发表于 2014-6-19 16:27:22

daiqihao 发表于 2014-6-19 16:24
如果外部中断只是用作唤醒作用的话那么对应的中断服务一定要写吗?如果不写程序跑飞了? ...

你既然允许了中断,就必须写中断函数。不然就像你说的跑飞。

daiqihao 发表于 2014-6-19 16:31:23

lusson 发表于 2014-6-19 16:27
你既然允许了中断,就必须写中断函数。不然就像你说的跑飞。

测试了,的确是,刚开始时是有写中断服务的,只是写了简单的赋值语句,应该是被优化了,这次把count清0放里面了。问题解决了,十分感应大神的神速回复,谢谢

daiqihao 发表于 2014-6-19 16:33:53

tam2907 发表于 2014-6-19 16:24
写一个空的INT0中断处理函数

对的,好了,是中断服务的问题,已经解决了,谢谢你
页: [1]
查看完整版本: 请教大神,STC单片机掉电模式后怎么唤也醒不来,如何解决