Forum: Mikrocontroller und Digitale Elektronik Anfängerprogramm


von Peter (Gast)


Angehängte Dateien:

Lesenswert?

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

von Christoph B. (nuke)


Lesenswert?

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

von Thomas H. (Firma: CIA) (apostel13)


Lesenswert?

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.

von Reiner.S (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.