MSP430F149ADC12單通道單次轉(zhuǎn)換
#define uint unsigned int
#define uchar unsigned char
static uchar adc_flag = 0 ;
uint AD_TEMP = 0 ;
void int_clk()
{
uchar i ;
BCSCTL1&=~XT2OFF; //打開XT振蕩器
BCSCTL2|=SELM1+SELS; //MCLK為8MHz,SMCLK為8MHz
do
{
IFG1&=~OFIFG; //清除振蕩錯誤標(biāo)志
for(i=0;i<100;i++)
_NOP(); //延時等待
}
while((IFG1&OFIFG)!=0); //如果標(biāo)志為1,則繼續(xù)循環(huán)等待
IFG1&=~OFIFG;
}
int_adc()
{
P6SEL |= BIT0 ; //選擇AD通道
ADC12CTL0 |= ADC12ON + SHT0_2 + REF2_5V + REFON ; //采樣保持時間為16個ADC12CLK
/*ADC12ON ADC模塊電源控制位;
REF2_5V 內(nèi)部參考電壓選擇位0:1.5V 1:2.5V
REFON 參考電壓模塊控制位0:關(guān)閉?。保捍蜷_*/
ADC12CTL1 |= ADC12SSEL0 + ADC12SSEL1 ; //ADC12時鐘源選擇控制位 00ADC12OSC 01ACLK 10MCLK 11SMCLK
ADC12MCTL0 = 0x10; // 連續(xù)轉(zhuǎn)換結(jié)束通道,CHANNEL = A0 參考選擇控制位
ADC12IE |= 0x01; //使能A/D轉(zhuǎn)換器
ADC12CTL0 |= ENC ; //AD轉(zhuǎn)換使能
}
#pragma vector = ADC_VECTOR
__interrupt void ADC12ISR(void)
{
while((ADC12CTL1 & 0x01)== 1); //等待轉(zhuǎn)換完
adc_flag = 1 ;
AD_TEMP = ADC12MEM0 ; //設(shè)置AD轉(zhuǎn)換完成標(biāo)志,并讀?。粒模弥?/div>
}
void main()
{
WDTCTL = WDTPW + WDTHOLD ;
int_clk();
int_adc();
_EINT(); //使能中斷
adc_flag = 1 ;
while(1)
{
while(adc_flag == 1)
{
ADC12CTL0 |= ADC12SC ; //開啟轉(zhuǎn)換
ADC12CTL0 &= ~ADC12SC ;
adc_flag = 0 ; //清中斷標(biāo)志
}
}
}
關(guān)鍵詞:
MSP430F149ADC12單通道單次轉(zhuǎn)
相關(guān)推薦
技術(shù)專區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線
- 開關(guān)電源
- 單片機
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機控制
- 藍(lán)牙
- PLC
- PWM
- 汽車電子
- 轉(zhuǎn)換器
- 電源管理
- 信號放大器
評論