Forum: Mikrocontroller und Digitale Elektronik Pic Uhr Asm programm


von Maddin (Gast)


Lesenswert?

Hallo,

ich programmiere in pic asm.

momentan strukturiere ich gerade ein uhrwerk.

mittlerweile ist das uhrwerk so komplex, das es funktionen (calls) für
die einstellungen der einzelnen variablen (sekunde,minute, stunde
usw..) gleich mit behandelt. zudem ist es komplett mit indirekter
adressierung der basisvariablen programmiert, sodass auch eine
eventuelle weckzeit mit den selben routinen bedient wird.

meine frage: hat jemand schonmal etwas ähnliches programmiert. würde
mir gerne noch einige impressionen aus anderem pic asm code ziehen :_)

maddin

von Frank (Gast)


Lesenswert?

guck mal bei josepino.com nach. Der hat auch schon Uhren mit PIC
gebaut.

bye

Frank

von Maddin (Gast)


Lesenswert?

Hallo Frank,

eine sehr umfangreiche seite! leider stellt der user nur hexfiles zur
verfügung, so wie es aussieht.

maddin

von Maddin (Gast)


Lesenswert?

hmmm..

gibts nicht so ein pic forum!? ich hoffe ich bin hier mit so einer
sache nicht falsch...

maddind

von inoffizieller WM-Rahul (Gast)


Lesenswert?

Weder fürn PIC noch in ASM, sondern fürn AVR in C.

von Frank (Gast)


Lesenswert?

bei Josepino gibts auch ein kleines Forum, da kann man auch direkt mit
dem Autor in Kontakt treten.

bye

Frank

von Peter D. (peda)


Lesenswert?

"hat jemand schonmal etwas ähnliches programmiert."

Ja, aber natürlich nicht auf nem PIC.

Ich hab früher Assembler (8051) gemacht und kann Dir zustimmen, daß es
schnell unübersichtlich wird, wenn man einfach drauf los schreibt.


Man muß besonders in Assembler erstmal ein Grundgerüst (Ablaufplan)
machen, ehe man losprogrammiert.
Und vor allem muß man sich erstmal Aufbau- und Aufrufkonventionen für
Funktionsmodule ausdenken und diese dann einhalten (welche Register
werden für Parameterübergabe reserviert usw.).
Man darf auch nie zuviel in einer Funktion gleichzeitg machen, sondern
immer schön in Unterfunktionen aufteilen.
Der PIC hat dabei Probleme, da er nur eine begrenzte Stacktiefe hat.
Trotzdem sollte man nicht auf Modularität verzichten, sondern sie dann
mit Macros als Inline-Funktion schreiben.


Der exponentiell steigenden Komplexität kannst Du dadurch begegnen, daß
Du alles in einer großen Statemachine laufen läßt.

Nachfolgend ein Beispiel in C:

http://www.mikrocontroller.net/forum/read-4-405548.html#new

Da es dabei 4 verschiedene Tastenereignisse gibt, müssen die einzelnen
States immer im 5-er Abstand sein und das Tastenereignis (1..4) wird
dann dazu addiert, falls es auftritt. Somit lassen sich beliebige
State-Wechsel realisieren, der Phantasie sind da keine Grenzen
gesetzt.


In Assembler macht man Statemachines mit einer Sprungtabelle, woraus
dann durch den Wert des States die entsprechende Sprungadresse
ausgewält wird (indirekter Sprung). Der 8051 hat dafür einen speziellen
Befehl (JMP @A+DPTR).
Beim PIC ist das kniffliger und vor allem muß man Sprünge über die
Bankgrenze gesondert berechnen.


Peter

von Maddin (Gast)


Lesenswert?

bei www.sprut.de gibts es zwar asm code, aber der ist lange nicht so
gestrickt...

@peter

vielen dank für die hinweise zum pic. arbeite schon ziehmlich lange mit
dem f84 und f877/f876.

maddin

von Maddin (Gast)


Lesenswert?

Hallo,

auf dieser seite habe ich ein wenig uhrencode in assembler gefunden,
allerdings konnte ich das nicht als impression der indirekt
adressierten variante aufnehmen, aber dafür sind die makros ganz nett

http://www.domnick-elektronik.de/picasm.htm

maddin

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.