El código de alta tecnología c adc no funciona como se esperaba

2

Soy nuevo en el uso de microcontroladores PIC y estoy trabajando en un proyecto que implica leer un valor analógico. Estoy usando el PIC16F877A. Encontré el código para usar el ADC publicado a continuación, pero cuando intento compilarlo, aparece el error Error [192] C: \ Users \ Owner \ Documents \ Pic Projects \ Analog \ Main.c; 20.1 identificador indefinido "GO_nDONE". Aquí está mi código

#include<htc.h>
#include<pic.h>
#define _XTAL_FREQ 20000000

__CONFIG(UNPROTECT & PWRTDIS & WDTDIS & HS & LVPDIS);

void InitADC(void)
{
    ADCON1  = 0x80;
    TRISA   = 0x2f;
    TRISE   = 0x07;
    ADCON0  = 0x81;
}

unsigned int GetADCValue(unsigned char Channel)
{
    ADCON0 &= 0xc7;
    ADCON0 |= (Channel<<3);
    __delay_ms(10);
    GO_nDONE = 1;
    while(GO_nDONE);
    return ((ADRESH<<8)+ADRESL);
}

void main()
{

}
    
pregunta popgalop

1 respuesta

2

Diferentes versiones del compilador HiTech C han definido pines / puertos PIC de diferentes maneras. Luego, cuando Microchip absorbió HiTech C, algunos se cambiaron nuevamente.

Si observa su archivo pic.h, verá a qué archivo de definiciones se está haciendo referencia para el PIC16F877A. Luego, busque en ese archivo para encontrar el #define de asignación ...

Por ejemplo, en PICC 9.50, se define como ADGO. En 9.83, se define como ADGO y GODONE. También he visto referencias a GO_DONE y GO_nDONE.

Simplemente puedes probar estos y encontrar cuál funciona. Sin embargo, le sugiero que encuentre el archivo para poder ver las otras asignaciones de pin / puerto / registro, también.

¡Buena suerte!

    
respondido por el bitsmack

Lea otras preguntas en las etiquetas