Ich würde folgenden Ablauf für die Programmplanung vorschlagen:
- "Lastenheft" schreiben (auf Papier), d.h. festlegen was wie, wann und
in welcher Form rein und raus kommt, und was das Programm überhaupt
alles machen soll. Also ein vollständiger Überblick über das externe
Verhalten deines Programms/µCs
- Zustandsdiagramm und Flussdiagramm entwerfen (auf Papier)
- Aufteilung in Funktionen, mit Festlegung der Funktionsprototyen mit
Datentypen und dem gewünschten Verhalten der einzelnen Funktionen sowohl
im Regel- als auch im Fehlerfall (evtl. nochmal Fluss- und/oder
Zustandsdiagramm für jede Funktion). Bei µC solltest Du ab hier schon
auf das Einpassen deiner Logig in die vorhandenen Ressourcen (Register,
Zähler, I/O-Ports, verwendung passender Datentypen, etc.) achten, damit
Du alles unterbringst. (alles immer noch auf Papier)
- Wenn Du es ganz amtlich machen willst definierst Du zu jeder Funktion
noch einen Test. Das ist ein kleines Script das die Funktion mit
typischen Eingabewerten innerhalb und außerhalb des definierten
Bereiches füttert, und die Rückgabe des korrekten Ergebnisses bzw. der
korrekten Fehlermeldung überprüft. Ich gah mal nicht ins Detail, da
gibts massenweise Literatur dazu.
Wenn Du die Planung hast ist das Schlimmste eigentlich überstanden.
- Jetzt schmeißt du vi oder den Editor deiner Wahl an. Am besten
schreibst Du zuerst die Tests (wenn Du welche machst), und dann kannst
Du die Funktionen der Reihe nach schreiben. main() zuletzt. Da Du alles
detailliert geplant hast sollten in dieser Phase keine großen
Überlegungen mehr nötig sein, Du übersetzt einfach deine Flussdiagramme
in gültiges ANSI-C bzw den C-Dialekt für deinen µC.
- Und am Schluss steht natürlich wie überall das Debuggen im Emulator
und schließlich der Upload in den µC.
Bei ganz einfachen Programmen kannst Du natürlich einen oder mehrere der
anfänglichen Planungsschritte auch im Kopf machen.
Viel Erfolg.