Hallo zusammen,
wenn ich eine 7Segmentanzeige über einen kompletten Port eines µC
anschliesse und maskiere, werden alle 8 Segmente, also inkl. Punkt mit
maskiert. Nun, ich würde für meine Anwendung den Punkt nicht brauchen
und den Ausgang anderweitig verwenden. Ich weiß, dass man ihn aus der
Maskierung weglassen kann. Mein Problem ist aber, der Punkt ist am 4.
Bit angeschlossen, also nicht am Ausgang 0 oder 7. Somit ist die
Maskierung wohl etwas aufwendiger, oder ?
Hi,
hab ich ja so gemacht. Nur kann ich den entsprechenden Ausgang für den
Punkt nicht mehr ein und ausschalten, weil er als Null maskiert wurde,
da er ja nicht gebraucht wird. Es wurden ja alle 8bits maskiert.
segm schrieb:> Hallo peter,>> und wie muss ich dann da vorgehen ? Bei einer Maskierung werden doch> immer 8bit berücksichtigt, oder ?
zeigt doch mal wie du es machst.
segm schrieb:> hab ich ja so gemacht. Nur kann ich den entsprechenden Ausgang für den> Punkt nicht mehr ein und ausschalten, weil er als Null maskiert wurde,
Dann hast Du ihn nicht maskiert, sondern auf 0 gesetzt.
Maskieren heißt, er bleibt auf seinem alten Zustand.
Hi
Du machst es dir scon schwer. In Assemblerwürd ich so vorgehen:
Ausgabe: .Byte 1 ; Ausgabe
Anzeige: .Byte 1 ; für 7 Segmentcode
Matrix_0: .Byte 1 ; Ablage für Zahlenmuster
Matrix_1: .Byte 1
etc
Ausgabebyte wird immer dem Port übergeben, also mußt du dafür sorgen,
das dein SChaltausgang nix mit dem 7-Segmentcode zu tun bekommt.
Ausgang war Bit 4, also
1
;*** Schaltbit aus ****
2
LDS R16, Ausgabe
3
ANDI R16, 0b11101111 ; Schaltbit auf 0, 7-Segmentcode bleibt
4
STS Ausgabe, R16
5
6
7
;*** Schaltbit ein ****
8
LDS R16, Ausgabe
9
ORI R16, 0b00010000 ; Schaltbit auf 1, 7-Segmentcode bleibt
10
STS Ausgabe, R16
Angenommen, du hast in einer Matrix den 7-Segmentcode hinterlegt, dann
musst du die Matrix ja auf das Ausgabebyte übertragen, ohne das
Schaltbit zu verändern. Also machst du bei der Variablen Ausgabe alle
Bits bis aufs Schaltbit aus
1
LDS R16, Ausgabe
2
ANDI R16, 0b00010000 ; 7-Segmentcode aus, Schaltbit bleibt
3
STS Ausgabe, R16
Nun löscht du das Bit 4 in der Mattrix, falls da was drin stehen sollte
1
LDS R17, Matrix_x
2
ANDI R17, 0b11101111 ; pos. Schaltbit aus, Matrix bleibt
3
OR R16, R17 ; Matrix und Schaltbit zusammenführen
4
STS Ausgabe, R16
5
6
; irgendwann weist du dann den Port zu
7
LDS R16, Ausgabe
8
OUT Portx, R16
So hast du die Ausgabe an einer Stelle, unabhängig, wo du die Bits in
die Variable bastelst.
Gruß oldmax