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