标题: 九齐单片机睡眠模式和按键唤醒程序 [打印本页]

作者: 1481509156    时间: 2024-6-19 19:49
标题: 九齐单片机睡眠模式和按键唤醒程序
#define K1 PA1
#define LED1 PA2
unsigned char K1_num=0;
void main(void)
{
     DISI();
     AWUCON = 0X02; //开启IO唤醒功能
     TMR0=0;              //初始定时器寄存器   
     T0MD=0X01;      //时钟分频
      INTE=0x03;      //使能定时器0中断和IO口状态变化中断
      PCON=0X01;    //开启TIMER0
      ENI();            //开启总中断
      while(1)
     {
         CLRWDT();
         if(K1_num==0)
         {
              LED1=1;                                    // 睡眠模式不亮
              WDTEN=0;                                // 关闭看门狗   
              AWUCON = 0XA0;                     //1010 0000
              T0MD   = 0X01;                       
             PCON1  = 0X80;                          // 关闭定时器0中断
             INTE   = 0X02;                          // 打开io变化中断            while( K1 && IO_CHARGE_IN==0)
             {            
                  SLEEP();                           // 进入睡眠状态   
              }                          T0MD   = 0X01;
             PCON1  = 0X81;                        //开启总中断和定时器0中断
              INTE   = 0X01;                          // 关闭外部中断打开定时器0中断
              WDTEN=1;                              //打开看门狗
              CLRWDT();         }
         else
          {
               LED1=0;               //唤醒点亮LED
               delay(3000);         //延时
               K1_num=0;           //返回休眠模式
          }
     }
}



void isr(void) __interrupt(0)
{
     if(INTFbits.T0IF)
      {
        
           if(K1==0){K1_num=1;}
      }
}








欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1