感谢大家的帮助。
我用3231芯片做了个电子时钟,想每秒读取一次时间。读取完成之单片机就掉电,等待下一秒3231的唤醒脉冲。这样能最大限度的降低功耗。
我的程序掉电部分已经能够正常去行了。准备转战下一个难题
我将范例程序贴出来,新手参考下,老鸟无视,主要是自我总结
INT0 = 1; //ready read INT0 port
while (!INT0); //check INT0
这两个语很重要,一个是将INT0置1
下一句是检测INT0是否为1,不是1就一直检测。说明置1的重要性
当然,有的时候,不加这两句是可以正常运行的。
以下是完整的范例程序
/*------------------------------------------------------------------*/
/* --- STC MCU Limited ---------------------------------------------*/
/* --- STC89-90xx Series MCU Power-Down wakeup by INT0 Demo --------*/
/* If you want to use the program or the program referenced in the */
/* article, please specify in which data and procedures from STC */
/*------------------------------------------------------------------*/
#include "reg51.h"
#include "intrins.h"
//External interrupt0 service routine
void exint0() interrupt 0 //(location at 0003H)
{
}
void main()
{
IT0 = 1; //set INT0 int type (1:Falling 0:Low level)
EX0 = 1; //enable INT0 interrupt
EA = 1; //open global interrupt switch
while (1)
{
INT0 = 1; //ready read INT0 port
while (!INT0); //check INT0
_nop_();
_nop_();
PCON = 0x02; //MCU power down
_nop_();
_nop_();
P1++;
}
}
|