mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Programmierung 68HC11/12 - 7SEG-Anzeige


Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

habe eine Frage.

Ich möchte eine Ausgabe Routine für eine 7 Segment-Anzeige schreiben.
Eher gesagt sind es 8 7 Segment-Anzeigen nebeneinander.
Ich habe einen Text: Meinetwegen HALLO. Den dazugehörigen HEX-Code habe 
ich als Textkonstante hinterlegt.
TEXT: DC.B $6E,$EE,$1C,$1C,$FC,$00
Die Steuerung ist am PORTJ und die Ausgabe am PORTT
Ich hatte mir die Programmierung so gedacht:
7SEG_OUT: 
PSHA          ;A in Sicherheit bringen
PSHB          ;B in Sicherheit bringen
LDAB #$80     ; Adresse des ersten Zeichens
LDX #TEXT     ; Adresse vom Text
LDAA 0,X      ; Daten von X nach A
STAA PORTT    ; Buchstabe nach 7SEG
STAB PORTJ    ; Ansteuerung der richtigen 7SEG
INX           ; Adresse ein weiter laufen
LSRB          ; nächste Stelle
LDAA 0,X      ; nächstes Zeichen nach A laden
BNE TEXT_OUT  ; wenn kein Zeichen mehr da ist, ende, sonst wieder nach oben
LDAB #$00 
STAB PORTJ    ; 7SEG deaktivieren
PULB          ; B wieder holen
PULA          ; A wieder holen
RTS           ; Rücksprung 

Kann mir jemand sagen ob das funktionieren würde?
Und wenn nicht warum? ;)
Vielen dank schonmal.

Autor: Helmi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo ist deine Label "TEXT_OUT" ?

Ausserdem würde ich die Schleife nicht bis zum 0 Zeichen laufen lassen 
sondern über alle 8 Stellen.

Ich nehme wohl an das die Routine im Interrupt Betrieb aufgerufen werden 
soll. Dann würde ich pro Interruptaufruf nur eine Stelle ausgeben. Sonst 
hast du das Problem das die Anzeigedauer für das Display sehr kurz wird. 
Das hat überigens auch deine Routine.

Gruss Helmi

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke schonmal für deine Antwort!
oh, das Label TEXT_OUT steht natürlich vor STAA PORTT.
Ja die Routine sollte im Real time interupt aufgerufen werden.
Wegen des Zeitproblems dachte ich dass ich zwischen der Ausgabe eines 
neuen Zeichens einfach eine kurze Zeit warte, ich dachte so an 400µs.
Aber ansonsten würde die Routine laufen? Das freut mich schonmal... :)

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.