<object id="k0taz"><form id="k0taz"></form></object>
<pre id="k0taz"></pre>
      1. <table id="k0taz"></table>
        <bdo id="k0taz"><center id="k0taz"></center></bdo>
        <table id="k0taz"><option id="k0taz"></option></table><track id="k0taz"><ruby id="k0taz"></ruby></track>
        專注電子技術學習與研究
        當前位置:單片機教程網 >> 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清空
        }
         
        關閉窗口
        欧美国产伦久久久久_亚洲爽爽一区二区三区_一色屋精品视频在线观看免费_久久伊人成色777综合网
        <object id="k0taz"><form id="k0taz"></form></object>
        <pre id="k0taz"></pre>
          1. <table id="k0taz"></table>
            <bdo id="k0taz"><center id="k0taz"></center></bdo>
            <table id="k0taz"><option id="k0taz"></option></table><track id="k0taz"><ruby id="k0taz"></ruby></track>