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


von Daniel (Gast)


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.
1
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:
1
7SEG_OUT: 
2
PSHA          ;A in Sicherheit bringen
3
PSHB          ;B in Sicherheit bringen
4
LDAB #$80     ; Adresse des ersten Zeichens
5
LDX #TEXT     ; Adresse vom Text
6
LDAA 0,X      ; Daten von X nach A
7
STAA PORTT    ; Buchstabe nach 7SEG
8
STAB PORTJ    ; Ansteuerung der richtigen 7SEG
9
INX           ; Adresse ein weiter laufen
10
LSRB          ; nächste Stelle
11
LDAA 0,X      ; nächstes Zeichen nach A laden
12
BNE TEXT_OUT  ; wenn kein Zeichen mehr da ist, ende, sonst wieder nach oben
13
LDAB #$00 
14
STAB PORTJ    ; 7SEG deaktivieren
15
PULB          ; B wieder holen
16
PULA          ; A wieder holen
17
RTS           ; Rücksprung

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

von Helmi (Gast)


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

von Daniel (Gast)


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

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.