?? p271_s1.c
字號:
//序列通道多次轉換舉例:P271
//AVcc作為參考源,通道為A0、A1、A2和A3。轉換結果分別存放在ADC12MEM0、ADC12MEM1、ADC12MEM2和ADC12MEM3。每次轉換完畢結果
//存放在A0results[]、A1results[]、A2results[]和A3results[]。
/*
將8路精密可調電阻電路板接到P6口,然后運行仿真,查看結果
*/
//#include "msp430x44x.h"
#include "msp430x14x.h"
#define Num_of_Results 8
static unsigned int A0results[Num_of_Results];
static unsigned int A1results[Num_of_Results];
static unsigned int A2results[Num_of_Results];
static unsigned int A3results[Num_of_Results];
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
P6SEL = 0x0F; //使能A/D通道
ADC12CTL0 = ADC12ON + MSC + SHT0_8;
ADC12CTL1 = SHP + CONSEQ_3; //序列通道多次轉換
ADC12MCTL0 = INCH_0; //ref+=Avcc,通道A0
ADC12MCTL1 = INCH_1; //ref+=Avcc,通道A1
ADC12MCTL2 = INCH_2; //ref+=Avcc,通道A2
ADC12MCTL3 = INCH_3 + EOS; //ref+=Avcc,通道A3,最后通道
ADC12IE = 0x08; //使能ADC12IFG.3
ADC12CTL0 |= ENC; //使能轉換
_EINT();
ADC12CTL0 |= ADC12SC; //開始轉換
_BIS_SR(LPM0_bits);
}
#pragma vector = ADC_VECTOR
__interrupt void ADC12ISR(void)
{
static unsigned int index = 0;
A0results[index] = ADC12MEM0; //存通道A0結果,清除IFG
A1results[index] = ADC12MEM1; //存通道A1結果,清除IFG
A2results[index] = ADC12MEM2; //存通道A2結果,清除IFG
A3results[index] = ADC12MEM3; //存通道A3結果,清除IFG
index = (index + 1)%Num_of_Results;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -