• <acronym id="ibnab"><strong id="ibnab"></strong></acronym><track id="ibnab"><strike id="ibnab"></strike></track>
  • <track id="ibnab"></track><acronym id="ibnab"></acronym>
  • <pre id="ibnab"><ruby id="ibnab"></ruby></pre>
  • <td id="ibnab"><noscript id="ibnab"></noscript></td>
  • <p id="ibnab"><label id="ibnab"></label></p>
  • 專注電子技術學習與研究
    當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

    新唐M051中斷喚醒(睡眠)演示程序

    作者:huqin   來源:本站原創   點擊數:  更新時間:2014年09月01日   【字體:

     給大家發一個測試成功的新唐M051單片機中斷喚醒(睡眠)的演示程序:

     
    #include "SmartM_M0.h"
    #define __KEYISR    EINT1_IRQHandler
    #define DEBUGMSG       printf
    /****************************************
    *函數名稱:KeyIntInit
    *輸    入:無
    *輸    出:無
    *功    能:按鍵中斷初始化
    ******************************************/
    VOID KeyIntInit(VOID)
    {
     P3_MFP = (P3_MFP & (~P33_EINT1_MCLK)) | EINT1;  //P3.2引腳設置為外部中斷
      
     DBNCECON &= ~ICLK_ON;
     DBNCECON &= DBCLK_HCLK;
     DBNCECON |= SMP_256CK;        //設置防反彈采樣周期選擇
                 
     P3_DBEN |= DBEN3;         //使能P3.2防反彈功能
      
     P3_IMD &= IMD3_EDG;    
     P3_IEN |= IF_EN3;         //設置外部中斷1為下降沿觸發
     NVIC_ISER |= EXT_INT1;
    }
    /****************************************
    *函數名稱:McuSleepDeep
    *輸    入:無
    *輸    出:無
    *功    能:MCU進入睡眠模式
    ******************************************/
    VOID McuSleepDeep(VOID)
    {
     Delayms(20); 
     PROTECT_REG
     (
      /* 進入睡眠模式 */
      SCR |= SLEEPDEEP;
      /* 禁止掉電模式下喚醒的中斷中斷使能 */
      PWRCON &= ~PD_WU_IE;
      PWRCON &= ~PD_WAIT_CPU;
      PWRCON |= PWR_DOWN_EN;  
     ) 
     Delayms(20);
    }
    /****************************************
    *函數名稱:main
    *輸    入:無
    *輸    出:無
    *功    能:函數主體
    ******************************************/
    INT32 main(VOID)
    {                   
      PROTECT_REG           //ISP下載時保護FLASH存儲器
      (
       PWRCON |= XTL12M_EN;        //默認時鐘源為外部晶振
       while((CLKSTATUS & XTL12M_STB) == 0);     //等待12MHz時鐘穩定 
       CLKSEL0 = (CLKSEL0 & (~HCLK)) | HCLK_12M; //設置外部晶振為系統時鐘 
       P2_PMD = 0x5555;
      )
      KeyIntInit();         //按鍵中斷初始化
      while(1)
      {
       P2_DOUT = 0x00;
       Delayms(500);
       P2_DOUT = 0xFF;
       Delayms(500);     
        McuSleepDeep();       //MCU進入睡眠模式     
      }
    }
    /****************************************
    *函數名稱:__KEYISR
    *輸    入:無
    *輸    出:無
    *功    能:按鍵中斷服務函數
    ******************************************/
    VOID __KEYISR(VOID)
    {
         Delayms(100);
      P3_ISRC = P3_ISRC;  //寫1清空
    }
     
    關閉窗口
    国产A片好看
  • <acronym id="ibnab"><strong id="ibnab"></strong></acronym><track id="ibnab"><strike id="ibnab"></strike></track>
  • <track id="ibnab"></track><acronym id="ibnab"></acronym>
  • <pre id="ibnab"><ruby id="ibnab"></ruby></pre>
  • <td id="ibnab"><noscript id="ibnab"></noscript></td>
  • <p id="ibnab"><label id="ibnab"></label></p>