www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Pic Uhr Asm programm


Autor: Maddin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
guck mal bei josepino.com nach. Der hat auch schon Uhren mit PIC
gebaut.

bye

Frank

Autor: Maddin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Frank,

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

maddin

Autor: Maddin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hmmm..

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

maddind

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weder fürn PIC noch in ASM, sondern fürn AVR in C.

Autor: Frank (Gast)
Datum:

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

bye

Frank

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Maddin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Maddin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.