PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ports zusammenlegen möglich ?



Blue72
12.08.2008, 18:39
Hallo,

ist es möglich 2 Ports zusammen zu legen ?
Ich möchte eine 16Segment Anzeige ansteuern aber mit nur einem
Befehl ansprechen, z.B.

LED_Port = &B11111111 (so ist es jetzt bei der 7 Segment)

Ist das für 2 Ports auch möglich ?

Blue

Dnerb
12.08.2008, 20:47
Klar, mit einem Befehl wäre es gemütlicher.
Der µCom muß das aber sowieso auf 2 mal machen.

Du kannst aber z.b. eine Word-Variable nehmen und dann mit

LED_Port_low_byte = Low(Word-Variable)
LED_Port_high_Byte = High(Word-Variable)

zumindest den Aufwand etwas reduzieren.

Du kannst dann das Ausgabemuster im 16Bit format in der Word-Variable speichern. Ist zumindest mal ein bissel was. ;)

Vitis
12.08.2008, 22:12
das geht einfacher mit overlayvariablen.
eine wordvariable mit zwei bytevariablen übereinander legen
und eben die zwei bytes schreiben ... aber für welches
display brauchste eigentlich 2 ganze ports?

Dnerb
12.08.2008, 22:57
Wie? NOCH einfacher? Respekt!

Blue72
12.08.2008, 23:22
Hallo,

vielen dank, das werde ich mal ausprobieren :) Ich brauche das für eine 16-Segment Anzeige ;)

Gruß
Jens

Vitis
13.08.2008, 09:13
LOL ... genau mit deren ansteuerung hab ich mich vorgestern rumgeschlagen
:)

ich habs so gemacht:

den zeichensatz als 2 byte -datensätze abgelegt und dann per $data und restore
einfach die zwei bytes wieder ausgelesen und auf die ports geschrieben
16bit brauchte ich nicht.
macht bei 8-bit risc auch keinen unterschied ob man 16bit ausliest
oder 2-mal 8-bit. der µC kann eh nur 8 bit in einem verarbeiten.

das kniffligste war bei der zahlendarstellung.
in meiner anwendung geh ich hin und definiere einen string
mit der auszugebenden zeichenfolge. über diesen string lege ich
ein bytearray als overlay, damit ich schön zeichen für zeichen auslesen
kann, dass dann auf den 16-segment-bus gelegt wird.
doof wirds dann bei kommastellen weil das komma ja auch ein zeichen ist.
sprich der multiplexer soll immer ein zeichen weiterzählen ausser es
ist ein Punkt oder ein komma, weil dann eben der dezimalpunkt
leuchten soll. daraus ergibt sich dass immer zwei zeichen ausgelesen
werden müssen. das aktuelle und das nachfolgende um zu prüfen ob
der punkt mit eingeschaltet werden muss oder nicht.
natürlich muss dann wenn das nachfolgende zeichen ein komma
ist dieses übersprungen werden in der anzeige ohne dass ne lücke
entsteht ... viel spass beim timing ;)

Blue72
13.08.2008, 09:19
Moin,

das klingt auch interessant. Danke Dir.

Blue