找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 1614|回復: 0
收起左側(cè)

九齊單片機睡眠模式和按鍵喚醒程序

[復制鏈接]
ID:1125252 發(fā)表于 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口狀態(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)閉定時器0中斷
             INTE   = 0X02;                          // 打開io變化中斷            while( K1 && IO_CHARGE_IN==0)
             {            
                  SLEEP();                           // 進入睡眠狀態(tài)   
              }                          T0MD   = 0X01;
             PCON1  = 0X81;                        //開啟總中斷和定時器0中斷
              INTE   = 0X01;                          // 關(guān)閉外部中斷打開定時器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;}
      }
}



回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表