Mikrocontroller(PIC16F1827)ADC带MPLAB中的MCC的加扰输出

时间:2019-02-22 14:30:00

标签: pic mplab mcc

我正在尝试构建一个从电位计到Arduino的AD转换器。我正在尝试同时在MPLAB中学习MCC。到目前为止,我已经生成了适合我的PIC的代码(我认为...)。我的问题是现在我的位表示的输出不正确。这是我配置的PIC16F1827(se图片) enter image description here

RA0 =输入,RB1和RB2 = EUSART,RB0,RB3,RA7,RA6,RB7,RB6,RB5,RB4 =输出。

我的主文件如下所示(se代码)。我得到一个输出,但是它表示错误,所以我不知道为什么...

char ADC_temp_in;
    while (1) //Infinite Loop
    {
        // Add your application code
        printf("pot_value =%d\r\n", ADC_GetConversion(channel_AN0_ADC));
        ADC_temp_in = ADC_GetConversion(channel_AN0_ADC);  // temp
        PORTB = ADC_temp_in;                  //Write Lower bits to PORTB
        PORTA = ADC_temp_in>>6;               //Write Higher 2 bits to PORTA
        __delay_ms(100);            //Delay     
    }

VREF + = 5V,直接连接到VDD。

我的目标是使用电位计将RB0作为LSB,将RA7作为MSB,并将电压差设为0-5 V。

1 个答案:

答案 0 :(得分:0)

两件事:
ADC_temp_in必须保留16位的值才能保存大于8位的值。
因此,请尝试:uint16_t ADC_temp_in;
当然,您的函数ADC_GetConversion必须返回一个uint_16值。

另一件事是,要获得MSB,您必须将值右移8次。

PORTA = ADC_temp_in>>8;