<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

        msp430定時器A、B與聯調

        作者:佚名   來源:本站原創   點擊數:  更新時間:2014年08月31日   【字體:

         #include  <msp430x24x.h> //130731調試通過

        typedef unsigned char uchar; 
        typedef unsigned int  uint; 
        unsigned char i = 0,j = 0; 
        void DelayMs(unsigned int ms)
        {
          unsigned char j;
          while(--ms)
          {
            for(j=130;j>0;--j);
        //      _NOP();
          }
        }
        /***** 定時器A 初使化 *******/
        void TimerA_Init(void)
        {
            CCTL0 = CCIE;                   //使能CCR0中斷 
            CCR0 = 5000; 
            TACTL = TASSEL_2 + ID_0 + MC_1; //定時器A的時鐘源選擇SMCLK,增計數模式 
        }
        /**** 定時器B 初使化 *****/
        void TimerB_Init (void)
        {
            TBCCTL0 = CCIE; // INTERRUPT ENABLE
            TBCCR0 = 5000; // 
            TBCTL = TBSSEL_2 + ID0 + MC_1; //ID_2 + ID1 +     
        }
        void SystemInit(void)
        {
        //    WDTCTL = WDTPW + WDTHOLD;       //關閉看門狗 
        /*    DCOCTL |= 0xE0;
            BCSCTL1 &= 0x00;
            BCSCTL1 |= 0x47;
            BCSCTL2 &= 0x00;
            BCSCTL2 |= 0x88;*/
            P2DIR = 0xff;                   //設置P2口方向為輸出 
            P2OUT = 0x00; 
            P5DIR = BIT4;                   //設置P6口方向為輸出 
            P5OUT = BIT4; 
            P1DIR = BIT1;                   //設置P6口方向為輸出 
            P1OUT &= ~BIT1; 
        }
        void Wdt(void)
        {
            WDTCTL |= WDTPW | WDT_MDLY_8;//以SMCLK進行32ms的延遲
            IE1 |= WDTIE; // 開WDT中斷
        }
        void main(void) 
            SystemInit();
            TimerA_Init();
            TimerB_Init(); 
            Wdt();
            _EINT();                        //使能全局中斷 
            for(;;)
            {      
              P5OUT ^= BIT4;
              DelayMs(200);
              __low_power_mode_4(); // 進入LPM4模式
            }
        /******************************************* 
        函數名稱:Timer_A  
        功    能:定時器A的中斷服務函數,在這里通過標志 
                  控制流水燈的流動方向和流動速度 
        參    數:無 
        返回值  :無 
        ********************************************/ 
        #pragma vector = TIMERA0_VECTOR 
        __interrupt void Timer_A (void) 
        {   
          if(i++ >19)
          {
            i=0;
            P2OUT ^= 0xF0;
          }
        /****** 定時器B 中斷處理 ***********/
        #pragma vector = TIMERB0_VECTOR
        __interrupt void Timer_B0 (void)
        {
          if(j++ > 5)
          {
            j = 0; 
            P2OUT ^= 0x0F;
        //    __low_power_mode_off_on_exit(); // 退出低功耗模式
          }
        }
        /****** 看門狗 中斷服務子程序***********/
        #pragma vector = WDT_VECTOR
        __interrupt void WDT_IRQ(void)
        {
          __low_power_mode_off_on_exit(); // 退出低功耗模式
          P1OUT ^= BIT1;// 對引腳取反
        }
         
        關閉窗口
        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮