mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Assembler 8051 7-Seg Zählproblem


Autor: rennschlumpf (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo allerseits,

ich bin gerade dabei meinen 8051 so zu programmieren dass er bei 
Tasterauslösung mit den 2 vorhandenen 7-Segment-Anzeigen immer eins 
hochzählt, von 00-99 und dann wieder bei 00 beginnend.

Jetzt habe ich 2 Probleme:
1.Es zählt nur der einer hoch und beginnt auch nach 9 wieder von 0. Der 
Zehner ist jedoch dauerhaft auf 8 mit Punkt also jedes Bit des P2 auf 1 
und verändert sich nicht.

2.nach überspielen auf den µC startet der Einer mit 1 obwohl an erster 
Stelle der Tabelle zahlen die 0 liegt. Dies lässt sich suboptimal 
beheben indem ich während der "init" Phase das R0 mit 9 
vorlade.(scheinbar durchläuft der µC die Interuptserviceroutine gleich 
nach beginn einmal, ich habe aber keine Idee weshalb)

Eventuell hat noch jemand Vorschläge zur Optimierung.

EIn Textfile mit dem code ist angehängt.

Vielen Dank und verzeiht mir die wahrscheinlich blöden Fragen

PS: Schwerpunkt sollte wie bei "ausgabe" zu sehen auf dem Multiplexen 
liegen

: Verschoben durch Moderator
Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was hat ein 8051 mit PC-Programmierung zu tun?

Genau: nichts. Verschoben.

Autor: Olli R. (omr) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Mit der richtigen Endung klappt's auch mit der Quaeltextformatierung.

Autor: rennschlumpf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke euch beiden.

Kann mir aber jemand bei meinem eigentlichen Problem helfen?


Danke schön

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
rennschlumpf schrieb:
> 1.Es zählt nur der einer hoch und beginnt auch nach 9 wieder von 0. Der
> Zehner ist jedoch dauerhaft auf 8 mit Punkt also jedes Bit des P2 auf 1
> und verändert sich nicht.

Der Code ist zwar äußerst suboptimal (Multiplex ohne Timerinterrupt) 
sollte es aber wuppen.
Also ein Hardwarefehler (Schaltplan oder Verdrahtung).


> 2.nach überspielen auf den µC startet der Einer mit 1 obwohl an erster
> Stelle der Tabelle zahlen die 0 liegt.

Für eine saubere Programmierung sollte man vor der Interruptfreigabe 
immer erst das dazugehörende Interrupt-Pending-Bit löschen.


Peter

Autor: rennschlumpf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke schon mal,

aber könntest du mir den Teil des Programms so erweitern, wie du das 
meinst? Ich weiß nicht wie ich dein Hinweis mit dem 
Interrupt-Pending-Bit umsetzen sollte?

Wäre dir sehr dankbar

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
rennschlumpf schrieb:
> aber könntest du mir den Teil des Programms so erweitern, wie du das
> meinst? Ich weiß nicht wie ich dein Hinweis mit dem
> Interrupt-Pending-Bit umsetzen sollte?

Jede Interruptquelle hat ein Bit, welches anzeigt, daß ein Interrupt 
anhängig (pending) ist, dieses mußt Du löschen.


Peter

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.