Forum: Mikrocontroller und Digitale Elektronik AT89S8252


von Christine (Gast)


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?

von Thomas Burkhardt (Gast)


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

von Christine (Gast)


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

von andré (Gast)


Lesenswert?

Naja:


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

usw...

mfG

von Thomas Burkhardt (Gast)


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 :)

von Christine (Gast)


Lesenswert?

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

von Peter D. (peda)


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

von Christine (Gast)


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.

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.