Parallelport -> einzelne bits?

hallo!

ich muss per parallelport ein kleines testboard ansteuern.
um genauer zu sein, dieses hier:

http://www.foo.fh-furtwangen.de/~mueller/pdv/tdc1/in…

da ich win xp nutze, hab ich mir von http://www.logix4u.net/ die entsprechende .dll herunter geladen. mit hilfe des testprogramms (c++) davon kann ich auch schon daten schicken und es passiert was. im testprogramm kann ich allerdings jetzt „nur“ einfach short-werte schicken. doch für das board soll ich einzelne bits an"steuern". wie mach ich das? ich kann auf den port+2 (also steuerleitung) ja einfach werte schicken. aber irgendwie is mein gedankengang, dass wenn ich bit 4 ansteuern will ich den wert 16 schicken muss falsch…
hat mir wer nen tipp, wie ich das mache?

danke und grüßle
Geisterkarle

aber irgendwie is mein gedankengang, dass wenn ich bit 4
ansteuern will ich den wert 16 schicken muss falsch…

1 2 4 8 16

16 waere also das fuenfte bit?

ach so, unterscheidet man bei dem thema lsb+msb?

128 64 32 16 8 4 2 1

1 2 4 8 16

16 waere also das fuenfte bit?

naja, in dem link sieht mer ja als „beschreibung“, dass es ein „bit 0“ gibt. und auch am parallelport sind die datenleitungen(datenbits) meist mit DB0-DB7 gerechnet. insofern schon korrekt.
aber seh ich diese aussage nun richtig, dass ich tatsächlich dann einfach in short werte schicken kann, die dann halt die entsprechenden DBs anspricht? wie mache ich das denn, wenn ich mehrere anspreche? also wie dort zu sehen:
bit 4 soll reset sein mit 0->1->0. also 0->16->0 senden?
aber wenn ich 0 oder 16 sende, dann is ja auch das 5. bit 0 und der zähler zählt, was er aber noch gar nicht soll.

irgendwie fehlt mir hier ein gedankengang… mal den autor fragen…

grüßle
Geisterkarle

Hallo,

merke dir einfach den alten Wert und ändere nur dieses eine Bit…
z.B.
w = 0xC0;

  1. bit setzen:

w |= 16; // Bitweises ODER, 0xC0 | 16 = 0xD0, 16=00010000b

  1. Bit Rücksetzen:

W &= 0xEF; // Bitweises und, 0xD0 & 0xEF = 0xC0, 0xEF=11101111b

und dann jeweils komplett rausschreiben…

Alexander

Hallo Alexander,

  1. bit setzen:

w |= 16; // Bitweises ODER, 0xC0 | 16 = 0xD0, 16=00010000b

  1. Bit Rücksetzen:

W &= 0xEF; // Bitweises und, 0xD0 & 0xEF = 0xC0,
0xEF=11101111b

Etwas übersichtlicher finde ich:

w |= 16;
w &= ~16;

Besonders wenn man das Ganze mit Konstanten macht:

#define BIT\_0 0x01
#define BIT\_1 0x02
#define BIT\_2 0x04
#define BIT\_3 0x08
#define BIT\_4 0x10
#define BIT\_5 0x20
#define BIT\_6 0x40
#define BIT\_7 0x80

w |= BIT\_4;
w &= ~BIT\_4;

MfG Peter(TOO)