|
#define K1 PA1
#define LED1 PA2
unsigned char K1_num=0;
void main(void)
{
DISI();
AWUCON = 0X02; //開啟IO喚醒功能
TMR0=0; //初始定時(shí)器寄存器
T0MD=0X01; //時(shí)鐘分頻
INTE=0x03; //使能定時(shí)器0中斷和IO口狀態(tài)變化中斷
PCON=0X01; //開啟TIMER0
ENI(); //開啟總中斷
while(1)
{
CLRWDT();
if(K1_num==0)
{
LED1=1; // 睡眠模式不亮
WDTEN=0; // 關(guān)閉看門狗
AWUCON = 0XA0; //1010 0000
T0MD = 0X01;
PCON1 = 0X80; // 關(guān)閉定時(shí)器0中斷
INTE = 0X02; // 打開io變化中斷 while( K1 && IO_CHARGE_IN==0)
{
SLEEP(); // 進(jìn)入睡眠狀態(tài)
} T0MD = 0X01;
PCON1 = 0X81; //開啟總中斷和定時(shí)器0中斷
INTE = 0X01; // 關(guān)閉外部中斷打開定時(shí)器0中斷
WDTEN=1; //打開看門狗
CLRWDT(); }
else
{
LED1=0; //喚醒點(diǎn)亮LED
delay(3000); //延時(shí)
K1_num=0; //返回休眠模式
}
}
}
void isr(void) __interrupt(0)
{
if(INTFbits.T0IF)
{
if(K1==0){K1_num=1;}
}
}
|
|