?? jiaoliu.c
字號(hào):
#include <msp430x14x.h>
char nADC_Flag;
int nADC_Count;
int ADC_BUF[40];
void Init_CLK(void);
void Init_ADC(void);
void Init_TimerA(void);
void Init_ADC(void)
{
//設(shè)置P6.0為模擬輸入通道
P6SEL = 0X01;
//設(shè)置ENC為0,從而修改ADC12寄存器的值
ADC12CTL0 &= ~(ENC);
//設(shè)置參考電壓分別為AVSS和AVCC,輸入通道為A0
ADC12MCTL0 = INCH_0 + EOS;
//轉(zhuǎn)換的起始地址為:ADCMEM0
ADC12CTL1 = 0X00;
ADC12CTL1 += CSTARTADD_0;
//采樣脈沖由采用定時(shí)器產(chǎn)生
ADC12CTL1 += SHP;
//轉(zhuǎn)換模式為:多通道、多次轉(zhuǎn)換
ADC12CTL1 += CONSEQ_1;
//內(nèi)部時(shí)鐘源
ADC12CTL1 += ADC12SSEL_0;
//時(shí)鐘分頻為1
ADC12CTL1 += ADC12DIV_0;
ADC12CTL0 += 8 * 0x100;
ADC12CTL0 += MSC;
ADC12CTL0 += ADC12ON;
ADC12IE = 0;
//關(guān)閉各個(gè)通道的轉(zhuǎn)換中斷
ADC12IE |= 0X00;
//使能ADC轉(zhuǎn)換
ADC12CTL0 |= ENC;
return;
}
void Init_TimerA(void)
{
// 選擇SMCLK,清除TAR
TACTL = TASSEL1 + TACLR;
// 1/8 SMCLK
TACTL += ID1;
TACTL += ID0;
// CCR0 中斷允許
CCTL0 = CCIE;
// 時(shí)間間隔為 500us
CCR0 = 500;
// 增記數(shù)模式
TACTL |= MC0;
return;
}
void Init_CLK(void)
{
unsigned int i;
BCSCTL1 = 0X00; //將寄存器的內(nèi)容清零
//XT2震蕩器開啟
//LFTX1工作在低頻模式
//ACLK的分頻因子為1
do
{
IFG1 &= ~OFIFG; // 清除OSCFault標(biāo)志
for (i = 0x20; i > 0; i--);
}
while ((IFG1 & OFIFG) == OFIFG); // 如果OSCFault =1
BCSCTL2 = 0X00; //將寄存器的內(nèi)容清零
BCSCTL2 += SELM1; //MCLK的時(shí)鐘源為TX2CLK,分頻因子為1
BCSCTL2 += SELS; //SMCLK的時(shí)鐘源為TX2CLK,分頻因子為1
}
interrupt [TIMERA0_VECTOR] void TimerA_ISR(void)
{
int results;
// 關(guān)閉轉(zhuǎn)換
ADC12CTL0 &= ~ENC;
// 讀出轉(zhuǎn)換結(jié)果
results = ADC12MEM0;
ADC_BUF[nADC_Count] = results;
// 計(jì)數(shù)器加1
nADC_Count += 1;
// 采集完40個(gè)點(diǎn)
if(nADC_Count == 40)
{
// 設(shè)置標(biāo)志
nADC_Flag = 1;
// 計(jì)數(shù)器清0
nADC_Count = 0;
}
// 開啟轉(zhuǎn)換
ADC12CTL0 |= ENC + ADC12SC;
}
void main(void)
{
int ADC_BUF_Temp[40];
int i;
// 關(guān)閉看門狗
WDTCTL = WDTPW + WDTHOLD;
// 關(guān)閉中斷
_DINT();
// 初始化
Init_CLK();
Init_ADC();
Init_TimerA();
// 打開中斷
_EINT();
// 循環(huán)處理
for(;;)
{
if(nADC_Flag == 1)
{
nADC_Flag = 0;
for(i = 0;i < 40;i++)
{
ADC_BUF_Temp[i] = ADC_BUF[i];
}
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -