Behebung bestimter Fehlermeldungen
-
Hallo!
Ich habe die Aufgabe mit MPLAB IDE ein Programm zu schreiben, was einen Microcontroller ansteuert!Da ich in ANSI C nicht grad sehr viel Ahnung hab, komme ich nicht weiter!Ich stellle hier mal den Teil meines Programms hinein, wo mir die ganzen Fehlermeldungen angezeigt werden!
void init (void)
{PORTA = 0x00;
PORTB = 0x00;
PORTC = 0x00;
TRISA = 0b00111111;
TRISB = 0b11111111;
TRISC = 0b10000000;RD0=1;
}
unsigned char we=0;
unsigned char we2=0;
unsigned char gr=0;
unsigned char gr2=0;//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
void entprellung (void)
{
while (1)
{
if (RB5==0 || RB4==0 || RB3==0 || RB2==0 )wait_for_release ();
wait_for_press ();else delay_ms(100);
}
}// wait_for_release(PORTB,0)
void wait_for_release(char port, short pin)
{
char x=0;
while(x != 5)
{
if (!bit_test(port,pin))
x++;
else
x=0;
delay_ms(50);
}}
// wait_for_press(PORTB,0)
void wait_for_press(char port, short pin)
{
char x=0;
while (x!=5)
{
if (!bit_test(port,pin))
x=0;
else
x++;
delay_ms(50);
}
}und nun die fehlermeldungen:
Error [312] 6.1 ";" erwartet
Warning [374] 10.7 fehlender Basis-Datentyp; int verwendet
Error [983] 10.7 Speicherklasse neu deklariert
Error [984] 10.7 type neu deklariert
Error [239] 10.7 Bezeichner "PORTB" (von Zeile 25) neu definiert
Warning [374] 11.7 fehlender Basis-Datentyp; int verwendet
Error [983] 11.7 Speicherklasse neu deklariert
Error [984] 11.7 type neu deklariert
Error [239] 11.7 Bezeichner "PORTC" (von Zeile 26) neu definiert
Warning [374] 12.7 fehlender Basis-Datentyp; int verwendet
Error [983] 12.7 Speicherklasse neu deklariert
Error [984] 12.7 type neu deklariert
Error [239] 12.7 Bezeichner "TRISA" (von Zeile 56) neu definiert
Warning [374] 13.7 fehlender Basis-Datentyp; int verwendet
Error [983] 13.7 Speicherklasse neu deklariert
Error [984] 13.7 type neu deklariert
Error [239] 13.7 Bezeichner "TRISB" (von Zeile 57) neu definiert
Warning [374] 14.7 fehlender Basis-Datentyp; int verwendet
Error [983] 14.7 Speicherklasse neu deklariert
Error [984] 14.7 type neu deklariert
Error [239] 14.7 Bezeichner "TRISC" (von Zeile 58) neu definiert
Warning [374] 16.4 fehlender Basis-Datentyp; int verwendet
Error [983] 16.4 Speicherklasse neu deklariert
Error [984] 16.4 type neu deklariert
Error [239] 16.4 Bezeichner "RD0" (von Zeile 136) neu definiert
Error [285] 18.1 die Deklaration enthält keine Bezeichner
Warning [374] 18.1 fehlender Basis-Datentyp; int verwendet
Error [314] 18.1 ";" erwartet
Advisory[1] too many errors (21)Ich wäre für eine Hilfestellung sehr dankbar!
MfG
-
Nulltens: sfds
Erstens: Wo in deinem Code ist die Zeile 6? Und was kommt vor der init() Funktion?
Zweitens: Die erste Meldung besagt, daß (wenn ich richtig gezählt habe) die letzte Deklaration vor der Funktion init() nicht ordnungsgemäß mit Semikolon abgeschlossen wurde - der Rest sind entweder Folgefehler oder die Zuweisungen kollidieren mit der Definition der Variablen PORTB, PORTC etc.
PS: Binär-Literale 0b... sind eigentlich nicht Bestandteil von Ansi C
-
bestimmt hat du ein #include <...> vergessen, also wo PORTA usw. definiert sind.
-
hallo nochmal!
also hab jetz noch einen header eingebunden und zwar den für den microchip.da sind die ports und so weiter deklariert!nun sind alle vorangegangenen fehler verschwunden, dafür sagt er mir aber, dass in dem eingebundenen header-file bestimmte bezeichner neu definiert sind!
wie hab ich das zu verstehen und wie kann ich das beheben?
hier nochmal mein quellcode:#include <htc.h> #include "delay.h" #include "pic168xa.h" __CONFIG (UNPROTECT & HS & LVPDIS & BORDIS & PWRTEN) void init (void) { PORTA = 0x00; PORTB = 0x00; PORTC = 0x00; TRISA = 0b00111111; TRISB = 0b11111111; TRISC = 0b10000000; RD0=1; } unsigned char we = 0; unsigned char we2 = 0; unsigned char gr = 0; unsigned char gr2 = 0; unsigned char hellwe = 0; unsigned char hellwe2 = 0; unsigned char hellgr = 0; unsigned char hellgr2 = 0; unsigned char dunkelwe = 0; unsigned char dunkelwe2 = 0; unsigned char dunkelgr = 0; unsigned char dunkelgr2 = 0; //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ void entprellung (void) { while(1) { if (RB5==0 || RB4==0 || RB3==0 || RB2==0) wait_for_release (); wait_for_press (); else delay_ms(100); } } //wait_for_release (PORTB,0) void wait_for_release(char port, short pin) { char x=0; while(x !=5) { if (!bit_test(port,pin)) x++; else x=0; DelayMs(50); } } //wait_for_press (PORTB,0) void wait_for_press(char port, short pin) { char x=0; while (x!=5) { if (!bit_test(port,pin)) x=0; else x++; DelayMs(50); } } ....
und hier die aktuellen fehlermeldungen, welche sich alle auf das darunter folgende header-file beziehen:
Error [239] 19.42 Bezeichner "INDF" (von Zeile 19) neu definiert
Error [239] 20.42 Bezeichner "TMR0" (von Zeile 20) neu definiert
Error [239] 21.41 Bezeichner "PCL" (von Zeile 21) neu definiert
Error [239] 22.44 Bezeichner "STATUS" (von Zeile 22) neu definiert
Error [239] 23.32 Bezeichner "FSR" (von Zeile 23) neu definiert
Error [239] 24.43 Bezeichner "PORTA" (von Zeile 24) neu definiert
Error [239] 25.43 Bezeichner "PORTB" (von Zeile 25) neu definiert
Error [239] 26.43 Bezeichner "PORTC" (von Zeile 26) neu definiert
Error [239] 28.43 Bezeichner "PORTD" (von Zeile 28) neu definiert
Error [239] 29.43 Bezeichner "PORTE" (von Zeile 29) neu definiert
Error [239] 31.35 Bezeichner "PCLATH" (von Zeile 31) neu definiert
Error [239] 32.44 Bezeichner "INTCON" (von Zeile 32) neu definiert
Error [239] 33.42 Bezeichner "PIR1" (von Zeile 33) neu definiert
Error [239] 34.42 Bezeichner "PIR2" (von Zeile 34) neu definiert
Error [239] 35.43 Bezeichner "TMR1L" (von Zeile 35) neu definiert
Error [239] 36.43 Bezeichner "TMR1H" (von Zeile 36) neu definiert
Error [239] 37.43 Bezeichner "T1CON" (von Zeile 37) neu definiert
Error [239] 38.42 Bezeichner "TMR2" (von Zeile 38) neu definiert
Error [239] 39.43 Bezeichner "T2CON" (von Zeile 39) neu definiert
Error [239] 40.44 Bezeichner "SSPBUF" (von Zeile 40) neu definiert
Error [239] 41.44 Bezeichner "SSPCON" (von Zeile 41) neu definiert#ifndef _HTC_H_ #warning Header file pic168xa.h included directly. Use #include <htc.h> instead. #endif /* * Header file for the Microchip * PIC 16F873A chip * PIC 16F874A chip * PIC 16F876A chip * PIC 16F877A chip * Midrange Microcontroller */ #if defined(_16F874A) || defined(_16F877A) #define __PINS_40 #endif static volatile unsigned char INDF @ 0x00; static volatile unsigned char TMR0 @ 0x01; static volatile unsigned char PCL @ 0x02; static volatile unsigned char STATUS @ 0x03; static unsigned char FSR @ 0x04; static volatile unsigned char PORTA @ 0x05; static volatile unsigned char PORTB @ 0x06; static volatile unsigned char PORTC @ 0x07; #ifdef __PINS_40 static volatile unsigned char PORTD @ 0x08; static volatile unsigned char PORTE @ 0x09; #endif static unsigned char PCLATH @ 0x0A; static volatile unsigned char INTCON @ 0x0B; static volatile unsigned char PIR1 @ 0x0C; static volatile unsigned char PIR2 @ 0x0D; static volatile unsigned char TMR1L @ 0x0E; static volatile unsigned char TMR1H @ 0x0F; static volatile unsigned char T1CON @ 0x10; static volatile unsigned char TMR2 @ 0x11; static volatile unsigned char T2CON @ 0x12; static volatile unsigned char SSPBUF @ 0x13; static volatile unsigned char SSPCON @ 0x14; static volatile unsigned char CCPR1L @ 0x15; static volatile unsigned char CCPR1H @ 0x16; static volatile unsigned char CCP1CON @ 0x17; static volatile unsigned char RCSTA @ 0x18; static volatile unsigned char TXREG @ 0x19; static volatile unsigned char RCREG @ 0x1A; static volatile unsigned char CCPR2L @ 0x1B; static volatile unsigned char CCPR2H @ 0x1C; static volatile unsigned char CCP2CON @ 0x1D; static volatile unsigned char ADRESH @ 0x1E; static volatile unsigned char ADCON0 @ 0x1F;
-
Die Datei hat aber keinen vernünftigen Include-Guard. Und außerdem besagt schon der Eintrag in Zeile 2, daß du den Header nicht direkt verwenden solltest.
-
ja ich bin mir auch nicht sicher, ob ich sie einbinden sollte,allerdings, wenn ich es nicht machebekomm ich wieder die fehlermeldungen von meinem ersten eintrag!!!
-
Dann binde doch gleich die richtige Datei ein - die Warnmeldung dort nennt die <htc.h> (und allen Anschein nach bindet diese den Hilfsheader ein).