Guten Abend, als Neueinsteiger habe ich wohl, wie viele vor mir, ein Uhrenprogramm für ein LCD mit dem HD 44780 Controller geschrieben. Eigentlich funktioniert alles so wie es soll, nur die Einstellroutine scheint mir zu langsam. Wahrscheinlich habe ich diese nicht richtig implementiert. Es wäre für mich sehr hilfreich, wenn erfahrene Programmierer sich einmal meinen Code anschauen und entsprechend für mich Hinweise für eine optimierte Stellroutine geben würden. Vielen Dank im Voraus Peter
Hallo Peter, ich behaupte mal die meisten Nutzer hier programmieren Mikrocontroller in C, nicht zuletzt weil sich Fehler leichter erkennen lassen, bzw. sich meist gar nicht so schnell einschleichen, wenn das Programm umfangreicher wird. Wahrscheinlich wird sich keiner die Mühe machen, deinen doch recht umfangreichen Assembler-Code durchzuarbeiten, um einen Fehler zu finden (ich nehme mich auch nicht aus, sorry). Ich würde dir raten, dich eingehender mit C auseinanderzusetzen, so fällt auch der Einstieg in die µC-Welt denke ich leichter (meine Meinung). Sicherlich ist es hilfreich, über Assembler Bescheid zu wissen, so hab ich auch angefangen. Für ernstzunehmende Projekte, die über das Blinken lassen von LEDs hinaus gehen, hat man mit höheren Sprachen schneller Erfolgserlebnisse... Viele Grüße, Christoph
Was heißt zu langsam? Du benutzt in deiner Funktion ein hartes Delay. Zählst 255*255. solche Verzögerungen sind schlechter Stil. Lass dich nicht entmutigen Assembler zu lernen. Die effektivsten Programme hinsichtlich Performance und Code größe schreibt man im mix aus assembler und C. Allerdings eignet man sich vorher die grundlegenden Prinzipien der I/O Behandlung und der Entprellung von Tastern an. Das geht am einfachsten in C. Wenn man es dann verstanden hat, also nicht einfach hier gepostete Lösungen in sein Projekt einbaut, macht man sich daran das ganze in Assembler umzusetzen und zu optimieren. Und was genau so wichtig ist bei der Programmierung, gerade bei MK ist den Umgang mit dem Debuger oder Siumlator zu lernen. Gerade wenn man in Assembler programmiert.
Der Fehler liegt in der Verwaltung vom flag. Beim stellen vom z.B. stellenh wird das flag nicht gesetzt und damit die Anzeige nicht aktualisiert. Die erfolgt erst nach einer Sekunde ausgelöst von der isr (flag=1).
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.