AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Tutorials Delphi Ansteuern des Parallelports
Tutorial durchsuchen
Ansicht
Themen-Optionen

Ansteuern des Parallelports

Ein Tutorial von flomei · begonnen am 25. Mai 2003 · letzter Beitrag vom 8. Okt 2006
 
Muetze1
(Gast)

n/a Beiträge
 
#30

Re: Ansteuern des Parallelports

  Alt 8. Feb 2005, 15:57
Moin!

Zitat von Capable:
was du mir sagen willst ist, dass ich

$16 in $10
$32 in $20
$64 in $40
$128 in $80

abändern soll, oder?
Ganz genau - es wurden die richtigen Zahlen genommen, aber leider wurden sie mit dem $ davor zu hexadezimalzahlen und damit wieder falsch.

 IF Value AND $01 = $01 then ShowMessage('Pin 1 ist gesetzt: Databit 0'); Der Wert Value beinhaltet ein Wert und dieser wird durch die unterschiedlichen Bits dargestellt. Um abzufragen ob einzelne Bits gesetzt sind oder nicht maskiert man sie aus. Dies geschieht durch eine binäre UND Verknüpfung. Dabei verknüpft man den Wert mit einer Maske. Bei einer UND Verknüpfung ist es so, dass nur die Bits gesetzt bleiben die auch in der Maske gesetzt sind - alle anderen werden auf 0 gesetzt. Und wenn nun in deinem Value das Bit 0 und Bit 1 gesetzt ist (Value = 3) und du eine UND Verknüpfung mit einem gesetzten Bit 0 und Bit 2 machst (5), dann wird Bit 0 und Bit 2 unverändert gelassen bei dem Wert und alle anderen Bits werden auf 0 gesetzt. Somit kannst du danach abfragen ob das Ergebnis <> 0 ist, was dann bedeutet das entweder Bit 0 oder Bit 2 gesetzt ist - oder beide.

Delphi-Quellcode:
     0000 0001b
AND 0000 0001b
= 0000 0001b

     0101 0101b
AND 1100 0011b
= 0100 0001b
Im Ergebnis sind immer nur die Bits gesetzt die in beiden Werten gesetzt sind - Wert und Maske. Daher auch UND ...

Die obige Abfrage in Delphi macht folgendes: Sie führt eine binäre UND-Verknüpfung mit dem Wert aus und einer Maske wo nur Bit 0 gesetzt ist. Danach fragt sie ab, ob das Ergebnis dieser Verknüpfung ein Wert mit gesetztem 0. Bit ist - alle anderen Bits können nicht mehr gesetzt sein. So gehen alle anderen IF Anweisungen auch vor - sie führen diese UND Verknüpfung durch - nacheinander für Bit 0, Bit 1, Bit 2, Bit 3, Bit 4, etc

@flomei:
Zitat von Muetze1:
@flomei:

Erklär mal bitte auch, das es eine Basisadresse gibt und dann die Register immer nur ein fester Offset von dieser Basisadresse ist.
Und bitte die Bit Abfrage korrigieren, also nicht If ( Value And $64 ) = $64 Then sondern If ( Value And 64 ) = 64 Then oder die richtigen Hexadezimalwerte dafür nutzen ($01, $02, $04, $08, $10, $20, $40, $80).

MfG
Muetze1
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz