Einzelnen Beitrag anzeigen

Muetze1
(Gast)

n/a Beiträge
 
#8

Re: 16-Bit Folge über LPT ausgeben

  Alt 14. Jan 2008, 15:04
Zitat von BoondockDuckling:
mit deinem Code passiert zwar etwas aber nicht das was passieren soll.
(kleine Erklärung: die Bitfolge 0000 1010 0000 0000 setzt die Leuchtintensität einer LED-Matrix, die am IC hängt, auf Minimal. Desshalb habe ich diese Bitfolge als Testfolge genommen. Stattdessen verschwindet aber einfach eine Zeile der Matrix. Das wird wohl eine Fehlinterpretation des ICs sein.)
Schonmal den Delay auch wieder hochgesetzt?

Zitat von BoondockDuckling:
Wenn ich, wie von dir angegeben, die Folge spiegel passiert garnichts mehr.
Beachtet auch shl durch shr zu ersetzen in der Zeile danach?

Zitat von BoondockDuckling:
Was z.b. bedeutet das hier:
lBit := ( lData and $8000 ) <> 0;
bzw. was hat die and $8000 und das <> 0 für eine Funktion?
Es wird ein binäres UND durchgeführt. Wenn du einen Wert x binär mit einem Wert Y "ver-und-est", dann sind im Ergebnis alle die Bits gesetzt, welche im Wert X gesetzt sind UND dies auch im Wert Y sind. $8000 ist der hexadezimale Wert, welches nur das Bit 15 gesetzt hat. Somit kann nach dem UND mit $8000 entweder 0 oder $8000 rauskommen. Ersteres ist das Ergebnis, wenn lData an Bit 15 eine 0 (nicht gesetzt) hat und ein $8000 kommt heraus, wenn Bit 15 gesetzt ist.

Ich hätte also auch schreiben können:
lBit := ( lData and $8000 ) = $8000; Dadurch, dass die Bitmaske von $8000 nur ein Bit (Bit 15) von Wert lData "durchlässt", kann halt nur $8000 oder 0 rauskommen. Und um nicht nochmal $8000 zu schreiben, habe ich einfach geschrieben <> 0.

Zitat von BoondockDuckling:
Achja aufgerufen habe ich die Prozedur so: WriteWord($378,2560); ... das sollte ja stimmen.
Klar, sollte so passen.
  Mit Zitat antworten Zitat