#include <msp430x14x.h>
static unsigned int ADC_GET;
float result;
void main(void)
{
WDTCTL = WDTPW+WDTHOLD; // 关狗
ADC12CTL0 = ADC12ON+MSC+SHT0_2 ; // 打开ADC12 cycle =16 T=16*ADC12CLK
ADC12CTL1 = SHP+CONSEQ_2; //采样输入信号为同向输入 单通道多次转换模式 时钟源ADC12CLK
ADC12MCTL0 = INCH_0+EOS; // ref-=AVss(0) ref+=AVcc(3.3), channel = A0 end seq
ADC12IE = 0x01; //允许ADC12IE.1 置位时中断
ADC12CTL0 |= ENC; // ADC12使能
P6SEL = 0x01; // P6.0 第二功能 AD
P2DIR|= 0XFF; //测试
while(1)
{
ADC12CTL0 |= ADC12SC; // 开始采样并转换
_BIS_SR(CPUOFF+GIE); // 关闭CPU 开全局中断
result=4095*ADC_GET/3.3; //结果处理
if (result>1)
{
P2OUT = 0X0F; //若P6.0口输入大于1V 则LED低四位亮
}
else
{
P2OUT = 0XF0; //高四位亮
}
}
}
#pragma vector=ADC_VECTOR
__interrupt void ADC (void)
{
ADC_GET = ADC12MEM0; // Move results, IFG is cleared
_BIC_SR_IRQ(LPM0_bits); // Clear LPM0, SET BREAKPOINT HERE
}
这是我的代码 接信号发生器 调到1V以上和以下 LED都灯不亮
遂测试
我把P2亮LED的指令 放在了 main的第一句 或者 while 循环 里的 第一句 或者中断里的第一句
下载进去LED都是灭的
将中断注释掉 能亮 貌似AD中断设置的问题 麻烦大家帮我看看
顺便看看我的代码有问题吗。。。。