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

📄 fet140_adc12_11.c

📁 LT-1B msp430 程序原理图集合
💻 C
字号:
//*****************************************************************************
//  MSP-FET430P140 DEMO - ADC12, SINGLE CHANNEL RPT MODE, TA1 AS SAMPLE TRIGGER
//
//  DESCRIPTION: SAMPLE AND CONVERT A0 USING TIMER_A AS SAMPLE TRIGGER IN
//  PULSE SAMPLE MODE. PUT "NUM_OF_RESULTS" ADC12MEM0 VALUES IN RESULTS[]
//  AND LIGHT LED (P1.0) WHEN DONE.
//
//               MSP430F149
//             ---------------
//            |               |
//     VIN -->|P6.0/A0        |
//            |               |
//
//  H. GREWAL
//  TEXAS INSTRUMENTS INC.
//  FEB 2005
//  BUILT WITH IAR EMBEDDED WORKBENCH VERSION: 3.21A
//*****************************************************************************
#INCLUDE  <MSP430X14X.H>

#DEFINE   NUM_OF_RESULTS   512
INT RESULTS[NUM_OF_RESULTS] = {0};

VOID ADC_INIT(VOID);

VOID MAIN(VOID)
{
  WDTCTL = WDTPW | WDTHOLD;                 // DISABLE THE WATCHDOG.
  ADC_INIT();                               // INITIALIZE ADC12
  ADC12CTL0 |= ENC;                         // START CONVERSION
  _BIS_SR(LPM0_BITS);                       // ENTER LPM0
}
                                                                      
                                                                     
VOID ADC_INIT(VOID)                                                  
{                                                                       
  P1DIR = 0XFF;                             // SET PORT TO OUTPUTS
  P1OUT = 0;                                // RESET PORT OUTPUTS
  P6SEL |= 0X01;                            // SELECT A0 INPUT
  ADC12CTL0 = ADC12ON+SHT0_1+REF2_5V+REFON; // SETUP ADC12
  ADC12CTL1 = SHP+CONSEQ_2+SHS_1;           // TIMER TRIGGERS SAMPLING
  ADC12MCTL0 = INCH_0 + SREF_1;
  ADC12IE = 0X0001;                         // ENABLE ADC12IFG.0
                                                                         
                                                                            
  TACCR0 = 1500;                            // DELAY TO ALLOW REF TO SETTLE
  TACCTL0 |= CCIE;                          // COMPARE-MODE INTERRUPT.
  TACTL = TASSEL_1 | MC_1;                  // TACLK = ACLK, UP MODE.
  _BIS_SR(LPM3_BITS + GIE);                 // WAIT FOR DELAY, ENABLE INTERRUPTS
  TACCTL0 &= ~CCIE;                         // DISABLE TIMER

  P2SEL |= BIT3;                            // SET FOR TIMER A1
  P2DIR |= 0X08;
  TACCR0 = 7;                               // INIT TACCR0 W/ SAMPLE PRD=CCR0+1
  TACCR1 = 4;                               // TRIG FOR ADC12 SAMPLE & CONVERT
  TACCTL1 = OUTMOD_3;                       // SET/RESET
  TACTL = TACLR | MC_1 | TASSEL_1;          // ACLK, CLEAR TAR, UP MODE
}

// TIMER_A0 INTERRUPT SERVICE ROUTINE
#PRAGMA VECTOR=TIMERA0_VECTOR
__INTERRUPT VOID TA0_ISR(VOID)
{
  TACTL = 0;
  LPM3_EXIT;                                // EXIT LPM3 ON RETURN
}


// ADC12 INTERRUPT SERVICE ROUTINE
#PRAGMA VECTOR=ADC_VECTOR
__INTERRUPT VOID ADC12ISR (VOID)
{
  STATIC UNSIGNED INT INDEX = 0;

  RESULTS[INDEX++] = ADC12MEM0;             // MOVE RESULTS

  IF (INDEX == 512)
  {
    ADC12CTL0 &= ~ENC;                      // STOP CONVERSION
    INDEX = 0;
    P1OUT |= 0X01;
    _BIS_SR(LPM3_BITS);                     // ENTER LPM3
  }
}

⌨️ 快捷键说明

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