• <i id="jb6ye"><bdo id="jb6ye"></bdo></i>
    1. <b id="jb6ye"><bdo id="jb6ye"><tr id="jb6ye"></tr></bdo></b><tt id="jb6ye"><tr id="jb6ye"><dfn id="jb6ye"></dfn></tr></tt><track id="jb6ye"><big id="jb6ye"></big></track>
    2. 专注电子技术学习与研究
      当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

      新唐M051定时器2测试程序

      作者:huqin   来源:本站原创   点击数:  更新时间:2014年09月01日   【字体:

      以下是M051单片机的定时器2测试程序 成功!!!

      #include "SmartM_M0.h"

      bool flag = 0; //中断标志位
      /****************************************
      *函数名称:TMR2Init
      *输    入:无
      *输    出:无
      *功    能:定时器2初始化
      ******************************************/
      VOID TMR2Init(VOID)
      {
          PROTECT_REG
       (
        /* 使能TMR2时钟源 */
           APBCLK |= TMR2_CLKEN;
        /* 选择TMR2时钟源为外部晶振12MHz */ 
        CLKSEL1 = (CLKSEL1 & (~TM2_CLK)) | TM1_12M;  
        /* 复位TMR2 */
        IPRSTC2 |=  TMR2_RST;
        IPRSTC2 &= ~TMR2_RST; 
        /* 选择TMR2的工作模式为周期模式*/ 
        TCSR2 &= ~TMR_MODE;
        TCSR2 |=  MODE_PERIOD;  
        /* 溢出周期 = (Period of timer clock input) * (8-bit Prescale + 1) * (24-bit TCMP)*/
        /* 溢出周期 = (1/12MHz) * (0 + 1) * (12000*500)=500ms (0.5S)*/
        TCSR2  = TCSR2 & 0xFFFFFF00;  // 设置预分频值 [0~255]
        TCMPR2 = 12000*500;        // 设置比较值 [0~16777215]
        TCSR2 |= TMR_IE;     //使能TMR0中断
        NVIC_ISER |= TMR2_INT; 
        TCSR2 |= CRST;      //复位TMR0计数器    
        TCSR2 |= CEN;      //使能TMR0
       )
      }
      /****************************************
      *函数名称:main
      *输    入:无
      *输    出:无
      *功    能:函数主体
      ******************************************/
      INT32 main(VOID)
      {
        u8 i =0;
           PROTECT_REG            //ISP下载时保护FLASH存储器
        (       
         PWRCON |= XTL12M_EN;      //默认时钟源为外部晶振
         while((CLKSTATUS & XTL12M_STB) == 0);   //等待12MHz时钟稳定      
         CLKSEL0 = (CLKSEL0 & (~HCLK)) | HCLK_12M; //设置外部晶振为系统时钟 
         P2_PMD = 0x5555;       //P2口设置为输出模式
            P2_DOUT= 0x00;        //P2口输出低电平
        )
        TMR2Init();
          while(1)
        {
         if(flag)
        {
         flag = 0;
         i++;
        }
        if(i>7)
        {
         i = 0;
        }
        P2_DOUT = 1UL<<i;         //P2口输出相应的电平
        }
      }
      /****************************************
      *函数名称:TMR2_IRQHandler
      *输    入:无
      *输    出:无
      *功    能:定时器2中断服务函数
      ******************************************/
      VOID TMR2_IRQHandler(VOID)
      {
       /* 清除TMR1中断标志位 */
       TISR2 |= TMR_TIF;
       flag = 1;
      }
      关闭窗口
      68日本xxxxxxxxx,水萝拉日语中字在线,德国videos高清,欧美色图片 网站地图