Delphi-Quellcode:
procedure WriteWord(const APort: Word; const AData: Word);
const
CLOCK = 1;
LOAD = 2;
DATA = 4;
var
i: integer;
lData: Word;
lPortData: Byte;
lBit: boolean;
begin
lData := AData;
PortIO(APort, 0); // LOAD löschen
for i := 0 to 15 do
begin
// Bit ermitteln
lBit := ( lData and $8000 ) <> 0;
lData := lData shl 1;
if lBit then
lPortData := DATA
else
lPortData := 0;
PortIO(APort, lPortData); // Data setzen
delay(5); // kann vllt. weg
PortIO(APort, lPortData or CLOCK); // CLOCK zusätzlich setzen
delay(5);
PortIO(APort, lPortData); // CLOCK wieder löschen
// trotz des Timings können folgende beiden Zeile wahrscheinlich weg...
delay(5);
PortIO(APort, 0); // DATA löschen
end;
PortIO(APort, LOAD);
end;
Wieder nur aus dem Beitragseditor...