This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

如何写代码才能是ADC12与DAC12共同工作



现在想实现的是先用DAC12的P6.6口输出数字模拟电压,再用ADC12的P6.0口采样并用1602液晶显示,程序如何用C语言写出来,while(1)里应该怎么写?
单片机是430f1611
  • ADC的代码见附件,DAC就比较简单了,当然端口需要改一下。

    #include <msp430.h>

    int main(void)
    {
    WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
    ADC12CTL0 = REF2_5V + REFON; // Internal 2.5V ref on
    DAC12_0CTL = DAC12IR + DAC12AMP_5 + DAC12ENC; // Internal ref gain 1
    DAC12_0DAT = 0x0666; // 1V

    }

    在DAC12_0DAT里设置需要转换的电压值,硬件上把两个端口连起来。初始化完进LPM模式,ADC转换完成后会产生中断,可以在中断里把ADC采样值显示在液晶屏上。当然这个方法就比较多样了。

  • void ADC_init(void)
    {
    P6SEL |= 0x01;
    ADC12CTL0=REF2_5V+REFON;
    ADC12CTL0 &= ~ENC;
    ADC12CTL0|=ADC12ON+SHT0_2+MSC;
    ADC12CTL1=SHP+CONSEQ_2;
    ADC12IE=0x01;
    ADC12CTL0 |= ENC;
    }


    void DAC_init(void)
    {
    ADC12CTL0|=REF2_5V+REFON;
    DAC12_0CTL=DAC12IR+DAC12AMP_5+DAC12ENC+DAC12LSEL_1;
    DAC12_0CTL |= DAC12CALON;
    while(DAC12_0CTL & DAC12CALON==DAC12CALON);
    }

    后来我问了别人,发现是ADC12与DAC12的初始化有问题,上面是更正过后的代码,标颜色的地方是问题所在