Ich bin neu in der Verwendung von PIC-Mikrocontrollern und arbeite an einem Projekt, bei dem ein analoger Wert gelesen wird. Ich verwende den PIC16F877A. Ich habe Code für die Verwendung des unten geposteten ADC gefunden, aber wenn ich versuche, ihn zu kompilieren, erhalte ich den Fehler Error [192] C:\Users\Owner\Documents\Pic Projects\Analog\Main.c; 20.1 undefinierter Bezeichner "GO_nDONE". Hier ist mein Code
#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()
{
}
Verschiedene Versionen des HiTech-C-Compilers haben PIC-Pins/Ports auf unterschiedliche Weise definiert. Dann, als Microchip HiTech C übernahm, wurden einige wieder geändert.
Wenn Sie in Ihre pic.h-Datei schauen, sehen Sie, auf welche Definitionsdatei für den PIC16F877A verwiesen wird. Schauen Sie dann in diese Datei, um die Zuordnung #defines ... zu finden.
Beispielsweise ist es in PICC 9.50 als ADGO definiert. In 9.83 ist es sowohl als ADGO als auch als GODONE definiert. Ich habe auch Verweise auf GO_DONE und GO_nDONE gesehen.
Sie könnten diese einfach ausprobieren und herausfinden, welche funktioniert. Ich schlage jedoch vor, dass Sie die Datei finden, damit Sie auch die anderen Pin/Port/Register-Zuordnungen sehen können.
Viel Glück!
David
Markovian8261
David
Markovian8261