mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AT89S8252


Autor: Christine (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich möchte eine Uhr programmieren, schaffe es schon das ein 7-Seg. bis 9
Zählt jetzt möchte ich das bei 9 das nächste segment 1 anzeigt und eben
weiter zählt, kann mit jemand beim code helfen?

Autor: Thomas Burkhardt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

(danke Admin, "der Beitrag, auf den sie hier antworten wollen,
existiert nicht" x-D)

Naja, nochmal kurz: BCD ist eine Lösung. Damit kann man nen binären
Zahler so zerlegen, dass jede Ziffer genau 4 Bit benötigt. Mit diesen
Halbbytes kannst du dann die Ausgabe der Ziffern erledigen. Bei Atmel
gibts dazu einen Codeschnipsel - Angabe deines µC fehlt ja leider...


Grüße

Autor: Christine (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verstehe nicht genau was du meinst,
also mir geht es nicht um die umsetzung von den zahlen sondern eher um
das logische, wie programmiere ich in assembler:
if einer =9 then zahl:= zahl+1 and einer:=0
dann soll einer wieder bis neun zählen und zehner wird dann auf 2
erhöht.
mein mikrocontroller: ATMEL AT89S8252

Autor: andré (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja:


Cjne einer, #9, not_9
inc zahl
mov einer, #0
not_9:

usw...

mfG

Autor: Thomas Burkhardt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja eben das geht mit BCD viel einfacher :)

Du zählst eine gewöhnliche Binärzahl hoch und konvertierst diese immer
zur Ausgabe in BCD.

Du kannst natürlich auch für jede Ziffer ein Register verschwenden :)

Autor: Christine (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe eine tabelle erstellt die ich dann immer indirekt über den akku
adressiere, das funktioniert ganz gut

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einfacher und Speicher sparender ist es aber, wenn Du gleich bis 60 (24)
zählst. Ein Byte kann ja Zahlen bis 255 speichern.

Und dann einfach durch 10 teilen, um die Einer und Zehner zu erhalten:

mov a, sekunde
mov b, #10
div ab ;A = Zehner, B = Einer


Peter

Autor: Christine (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verstehe das leider nicht ganz wie du das genau meinst,
und dann muss ich ja die zahlen noch in hex umwandeln um sie auf meiner
7-seg- anzeigen zukönnen.

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.