?? main.c
字號:
#include "msp430x20x2.h"
//此程序是用ADC10單通道多次方式測片內溫度二極管的電壓
// MSP430F20x2
// -----------------
// /|\| XIN|-
// | | |
// --|RST XOUT|-
// | |
// |A10 (Temp) P1.0|-->LED
volatile unsigned int ad_value[10];
int main( void )
{
WDTCTL=WDTPW+WDTHOLD; //關看門狗
BCSCTL1 =CALBC1_1MHZ; //設定DCO為1MHZ
DCOCTL =CALBC1_1MHZ;
//時鐘源選AD內部時鐘并4分頻,選通道10,AD啟動信號來源選TA.OUT1,選單通道連續采樣
ADC10CTL1=ADC10DIV_3+INCH_10+SHS_1+CONSEQ_2;
//選1.5V為正向參考,地為負參考,AD中斷使能,打開參考,啟動AD模塊(不是啟動AD轉換)
ADC10CTL0=SREF_1+ADC10SHT_3+ADC10IE+REFON+ADC10ON;
TACCR0=30; //延時等待參考穩定
TACCTL0 |=CCIE; //CCR0中斷使能
TACTL=TACLR+MC_1+TASSEL_2; //TA增計數,時鐘源為smclk
_BIS_SR(LPM0_bits+GIE); //進入低功耗0,使能總中斷,等待參考穩定
TACCTL0 &=~CCIE; //CCR0中斷禁止
_BIC_SR(GIE); //關總中斷
ADC10CTL0 |=ENC; //AD轉換使能
TACCTL1=OUTMOD_4; //CCR1選輸出模式4,當TAR=0時,輸出高電平
TACTL =TASSEL_2+MC_2; //TA改為連續計數,smclk時鐘源
_BIS_SR(LPM0_bits+GIE); //進入低功耗0,使能總中斷,等待10AD完成
_NOP();
return 0;
}
#pragma vector = TIMERA0_VECTOR //TA0中斷服務,用來參考穩定
__interrupt void ta0_isr(void)
{
TACTL=0; //關TA
_BIC_SR_IRQ(LPM0_bits); //退出低功耗
}
#pragma vector = ADC10_VECTOR //ADC10中斷服務
__interrupt void adc_isr(void)
{
static char i=0;
ad_value[i]=ADC10MEM; //保存AD結果
i++;
if(i==10) //作10次AD
_BIC_SR_IRQ(LPM0_bits+GIE); //退出低功耗
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -