renchaoang 发表于 2009-12-28 17:10:54

msp430 AD转换难题

我需要利用MSP430F做一个AD转换程序,利用P6.1,作为输入,输入口接一个一氧化碳传感器(CO/AF 1100型号),可是程序写好了怎么也跑不起来,这是我编写的程序,高人指点一下,编程器下载到芯片后,接上一氧化碳传感器,数码管没有反应
#include "msp430x44x.h"
unsigned char led_Buf={0,0,0,0};
unsigned char ADCresult[];
unsigned char LED_IN_USE;
const unsigned char NUM_LED={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};//1,2,3,4,.........F
void delay(int v)
{
while(v!=0)v--;
}
void init_weixuan()
{
P2DIR=0xf0;////位码选择,用P1.5-P1.7控制四位数码管
P2OUT=0x00;
}
void init_LED()
{P5DIR=0xff; //P5口连接数码管
P5OUT=0x00;
}
void led_Display()
{
P2OUT=0xb0;//选通第一位
P5OUT=NUM_LED];//
delay(900);//
P5OUT=0x00;//

P2OUT=0xd0;//选通第二位
P5OUT=NUM_LED];//
delay(900);//
P5OUT=0x00;//

P2OUT=0xe0;//选通第三位
P5OUT=NUM_LED];
delay(900);
P5OUT=0x00;

P2OUT=0x70;//选通第四位
P5OUT=NUM_LED];
delay(900);
P5OUT=0x00;
}


void main(void)
{
unsigned int i;

P6SEL = 0x02;
WDTCTL = WDTPW+WDTHOLD; // 停止看门狗定时器
ADC12CTL0 = ADC12ON+REFON+REF2_5V+MSC+SHT0_6; // 设置 ADC12, 参考电压,采样时间
ADC12CTL1 = SHP+ CONSEQ_2; // 用采样定时器
ADC12MCTL0 = INCH_0+SREF_1; // 选择通道 A10, Vref+
ADC12IE = 0x01; // 使能ADC12IFG.0
init_weixuan();
init_LED();
for (i=0; i<0x3; i++) //延时等待参考稳定
{
}

ADC12CTL0 |= ENC; //使能转换
_EINT(); // 使能中断

while(1)
{
ADC12CTL0 |= ADC12SC; // 开始转换
_BIS_SR(LPM0_bits);
P1OUT=BIT0+BIT1; // 进入LPM0
//
_NOP();
}

}
#pragma vector=ADC_VECTOR
__interrupt void ADC12ISR (void)
{int i=0,tmp=0;
int ADC_Sum=0;
ADCresult = ADC12MEM0;
for(i=0;i<16;i++)

{ADC_Sum +=ADCresult ;
i++;
} // 读取结果
ADC_Sum>>=4;
for(tmp=0;tmp<4;tmp++)
{
led_Buf=ADC_Sum%10;
ADC_Sum=ADC_Sum/10;
}

led_Display();
_BIC_SR_IRQ(LPM0_bits); // 清 LPM0
}

hy317 发表于 2009-12-28 17:24:51

都低功耗了还跑什么啊

ksniper 发表于 2009-12-28 17:29:31

回头慢慢看
页: [1]
查看完整版本: msp430 AD转换难题