⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 msp430f149操作定时器的例子,非常经典
💻 C
字号:
//******************************************************************************
//  MSP-FET430P140 Demo - Timer_A, Toggle P3.4, CCR0 Cont. Mode ISR, DCO SMCLK
//
//  Description: Toggle P3.4 using software and TA_0 ISR. Toggles every
//  50000 SMCLK cycles. SMCLK provides clock source for TACLK.
//  During the TA_0 ISR, P3.4 is toggled and 50000 clock cycles are added to
//  CCR0. TA_0 ISR is triggered every 50000 cycles. CPU is normally off and
//  used only during TA_ISR.
//  ACLK = n/a, MCLK = SMCLK = TACLK = default DCO ~800kHz
//
//           MSP430F149
//         ---------------
//     /|\|            XIN|-
//      | |               |
//      --|RST        XOUT|-
//        |               |
//        |           P3.4|-->LED
//
//  Dasheng
//  LiTian Electronic Inc.
//  Feb 2008
//  Built with IAR Embedded Workbench Version: 3.42A
//******************************************************************************

#include  <msp430x14x.h>
#include  "BoardConfig.h"
void Delay_ms(unsigned long nValue)
{

}

void Delay_us(unsigned long nValue)
{
  int i;
  for(i=nValue;i>0;i--);
  
}
void main(void)
{

  WDTCTL = WDTPW + WDTHOLD;              // Stop WDT
  BoardConfig(0xb8);                     //关闭数码管、流水灯和电平转换
  
  //dir
  
  P4DIR |= BIT4;                        // P4.4 output
                         
  P4OUT &=~(BIT4);                       //p4.4 --0
  
  P4DIR |= BIT0;                        // P4.0 output
                         
  P4OUT &=~(BIT0);                       //p4.0 --0
  
  //默认的指令周期就是1/800 kHz=1.25μs。要得到lμs的指令周期需要调整DCO频率,即MCLK=1 MHz,只需进行如下设置:BCSCTLl=XT20FF+RSEL2
  //单片机上电后,如果不对时钟系统进行设置,默认800 kHz的DCOCLK为MCLK和SMCLK的时钟源
  Delay_us(6); 
  
  //P3DIR |= BIT4; 
    
  //cp  
  P4DIR |= BIT6;                            // P4.6 output
  P4DIR |= BIT2;                            // P4.2 output
  
   
  CCTL0 = CCIE;                             // CCR0 interrupt enabled
  TBCCTL0 = CCIE;  
  
  CCR0=50;
  TBCCR0=200;
  TACTL = TASSEL_2 + MC_1;                  // SMCLK, upmode
   TBCTL = TBSSEL_2 + MC_1;                  // SMCLK, upmode
  //  TACTL = TASSEL_1 + MC_2 + TAIE;           // ACLK, contmode, interrupt
  
  // P3DIR |= BIT4;     
  
  
  
  _BIS_SR(LPM0_bits + GIE);                 // Enter LPM0 w/ interrupt
}



// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
  P4OUT ^= BIT6;                            // Toggle P4.6
                     
  
  
  // P3OUT ^= BIT4;                            // Toggle P3.4
}

#pragma vector=TIMERB0_VECTOR
__interrupt void Timer_B (void)
{
                       
  P4OUT ^= BIT2;                            // Toggle P4.2
  
  
  // P3OUT ^= BIT4;                            // Toggle P3.4
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -