📄 fet140_adc12_11.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 + -