missing function-prototype
-
Hallo,
ich hoffe, ich erstelle den Thread hier nicht im falschen Unterforum. Falls doch, könnte es ein Mod bitte verschieben.Zu meinem Problem:
Eigentlich nur ne Kleinigkeit, aber irgendwie finde ich den Fehler nicht.
Der Compiler sagt mir:
LEDANZEIGE.C(18): warning C206: 'setZeilen': missing function-prototype
LEDANZEIGE.C(18): error C267: 'setZeilen': requires ANSI-style prototypeIn meiner main will ich mit setZeilen(0x0F); folgende Methode aufrufen:
void setZeilen(int coded) { //Zeilen dekodieren und auf P0 laden decoded = 0xFF; for (i=0; i<7; i++) { if (coded >= 0x40/(potenz(2, i))) { decoded = decoded - Zeilencode[i]; coded = coded - 0x40/(potenz(2, i)); } } P0 = decoded; }
Natürlich habe ich fleißig geegoogelt, aber ich komme nicht weiter. Anscheinend sollen die Paramter nicht mit der Definition der Methode übereinstimmen. Aber sie hat doch nen stink-normalen integer Parameter, den ich beim Aufruf mit 0x0F initialisieren will.
Ich vermute, das liegt garnicht an der Methode setZeilen selber. Wenn ich den Aufruf auskommentiere, bekomme ich die gleichen Fehlermeldungen beim Aufruf einer anderen Methode, bei der aber m.M.n. auch alles richtig ist.
Habt ihr ne Idee, was da nicht stimmt?
Wenn ihr mehr Quellcode braucht, kann ich auch einfach alles hier posten.
Das ganze ist nen Projekt für die Schule. Das Programm kommt als .hex auf nen MicroControler mit ner angeschlossenen 5x7 LED Matrix.
-
Du hast
setZeilen
nach main stehen.Daher weiß der Compiler in
main
noch nicht wie die Funktion korrekt aufgerufen wird.
Daher macht er eine Annahme, die aber in deinem Fall falsch ist.Entweder
setZeilen
vor dem ersten Aufruf setzen,
oder den Prototyp an den Anfang des Programms setzen:void setZeilen(int coded);
Wo hast du
decoded
definiert?Hast du einen Keil-Compiler?
-
Danke!
Ich habe die Reihenfolge der Methoden entsprechend verändert, und es funktioniert.
decoded ist ganz am Anfang außerhalb einer Methode definiert.
Ich benutze Keil uVision V4.02
C Compiler: C51.Exe V9.01Nun bekam ich - auch nach Ändern sämtlicher Datentypen auf char - die Meldung
*** ERROR L107: ADDRESS SPACE OVERFLOW
Durch Auskommentieren eines Arrays kann ich diese Meldung aber erst einmal umgehen und mein Programm testen.
Ich weiß zwar nicht, wo ich das Programm noch verkleinern könnte, aber das ist vorerst egal.
-
Andi93 schrieb:
Nun bekam ich - auch nach Ändern sämtlicher Datentypen auf char - die Meldung
*** ERROR L107: ADDRESS SPACE OVERFLOW
Durch Auskommentieren eines Arrays kann ich diese Meldung aber erst einmal umgehen und mein Programm testen.
Ich weiß zwar nicht, wo ich das Programm noch verkleinern könnte, aber das ist vorerst egal.Auf einem Mikrocontroller muss man halt sparsam sein.
Wie hast du das Array denn definiert?
-
Das Array sieht folgendermaßen aus:
unsigned char text1[10][5] = { {0x00, 0x41, 0x7F, 0x41, 0x00}, // I {0x40, 0x40, 0x7F, 0x40, 0x40}, // T {0x08, 0x08, 0x08, 0x08, 0x08}, // - {0x7F, 0x48, 0x48, 0x48, 0x30}, // P {0x1F, 0x08, 0x10, 0x10, 0x08}, // r {0x0E, 0x11, 0x11, 0x11, 0x0E}, // o {0x02, 0x01, 0x01, 0x5E, 0x00}, // j {0x0E, 0x15, 0x15, 0x15, 0x0D}, // e {0x7F, 0x04, 0x0A, 0x11, 0x00}, // k {0x10, 0x10, 0x7E, 0x11, 0x12}}; // t
Darin speichere ich die Ansteuerung der Spalten. Also ich lade einfach mit zwei verschachtelten Zählschleifen den Inhalt des Arrays auf den entsprechenden Port, um nacheinander die 10 Zeichen des Textes anzuzeigen.
Ich hatte eigentlich vor, zwischen drei Texten switchen zu können. Aber nun nehm ich erst einmal nur einen Text, da mein Programm ja mit zwei Arrays bereits zu groß ist.Momentan habe ich das Problem, dass mehr LEDs leuchten als es sollen. Aber da probier ich erst einmal selber rum. Ich vermute, der MicroControler rattert da zu schnell durch, und werde es mal mit einer Pause-Funktion versuchen.
//Edit: Problem schon gelöst
Hab nicht daran gedacht, die eine Spalte auszuschalten, bevor ich die Zeilen mit dem Wert für die nächste Spalte belege.
-
Evtl. kannst du die Tabelle(n) im ROM/Flash lassen. Jetzt wird sie mit ins RAM geladen.
Das ist aber sehr Architekturabhängig.