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 User
Mit der richtigen Endung klappt's auch mit der Quaeltextformatierung.
Danke euch beiden. Kann mir aber jemand bei meinem eigentlichen Problem helfen? Danke schön
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.