@ 021aet04
Danke für deine hilfe. Hab meine Fehler danke deiner Hilfe und Hinweise gefunden.
Oh man, die sind wirklich dämlich Fehler, aber ok. Man lernt dadurchHabe heute nochmal im C-Buch gelesen und da sind mir meine Fehler aufgefallen.
So hier jetzt die Lösung. Nur falls es jemanden Interessiert.
Also kurz zu den Fehlern. Ne Funktion muss den Wert reingereicht bekommen. Also Var_In und nicht Out. Wenn in der While -Schleife nur ein Befehl steht, wiederholt er es nicht. Komisch, aber mit dem Delay gehts supi (ich rede jetzt vom AVRGCC Simulator).Code:#include <avr/io.h> #include <stdio.h> #include <inttypes.h> #ifndef F_CPU #define F_CPU 80000000UL /* Quarz mit 8 Mhz */ #endif #include <util/delay.h> /* definiert _delay_ms() ab avr-libc Version 1.2.0 */ #include "main_header.h" // Einfügen der Header-Datei main_header.h int main(void) //Hauptprogramm { int8_t Var_In = 0; Var_In = 19; DDRD = 0b11111111; // PORTD als Ausgang setzen DDRC = 0xff; //PortC alles auf Ausgang while(1) { PORTD = zaehler(Var_In); //Aufruf Funktion _delay_ms(1); // Eine Sekunde +/-1/10000 Sekunde warten... // funktioniert nicht mit Bibliotheken vor 1.6 } } int8_t zaehler(int8_t Var_In) //Definition der Funktion "zaehler" { static int8_t Var_Out; //Damit er die Variable gleich im Speicher lässt!? Var_Out = Var_Out++; //hochzählen return (Var_Out); }
Das einzige was immer noch nicht will ist halt lokale Variablen im Watch zu betrachten.
Zitat C-Buch: Für das Anlegen von Variablen gilt: »So lokal wie möglich und so global wie nötig.PS: Warum sollte man keine globalen Variablen nehmen? Lokale Variablen kann man nur innerhalb von Funktionen verwenden (so wie du es in der Funktion gemacht hast). Globale Variablen kannst du im gesamten Programm verwenden. Es gibt dann noch Variablen mit "volatile". Diese kann man dann auch in z.B. ISR verwenden.
Guckst du hier. Da ist es gut erklärt.
http://openbook.galileocomputing.de/...e218a3e906958e
thx Arno







Zitieren
Lesezeichen