我需要利用MSP430F做一个AD转换程序,利用P6.1,作为输入,输入口接一个一氧化碳传感器(CO/AF 1100型号),可是程序写好了怎么也跑不起来,这是我编写的程序,高人指点一下,编程器下载到芯片后,接上一氧化碳传感器,数码管没有反应
#include "msp430x44x.h"
unsigned char led_Buf[4]={0,0,0,0};
unsigned char ADCresult[];
unsigned char LED_IN_USE;
const unsigned char NUM_LED[17]={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[led_Buf[0]];//
delay(900);//
P5OUT=0x00;//
P2OUT=0xd0;//选通第二位
P5OUT=NUM_LED[led_Buf[1]];//
delay(900);//
P5OUT=0x00;//
P2OUT=0xe0;//选通第三位
P5OUT=NUM_LED[led_Buf[3]];
delay(900);
P5OUT=0x00;
P2OUT=0x70;//选通第四位
P5OUT=NUM_LED[led_Buf[3]];
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[tmp]=ADC_Sum%10;
ADC_Sum=ADC_Sum/10;
}
led_Display();
_BIC_SR_IRQ(LPM0_bits); // 清 LPM0
}
|
|