AVR Embedded Tutorial - Shiftregister/de
From Lazarus wiki
Jump to navigationJump to search
Schieberegister
Der Beispielcode ist für ein ATtiny2313.
Schieberegister schreiben
const
// PortB
dataInPin = 0;
// PortD
dataOutPin = 0;
latchPin = 1;
clockPin = 2;
Schieberegister schreiben
function ShiftIn74HC165: byte;
var
Data: byte = 0;
i: byte;
begin
mysleep(20);
for i := 0 to 7 do begin
Data := (Data shl 1) or Byte(ReadPortB(dataInPin));
WritePortD(clockPin, True);
mysleep(20);
WritePortD(clockPin, False);
mysleep(20);
end;
Result := Data;
end;
Schieberegister lesen
function ShiftIn74HC165: byte;
var
Data: byte = 0;
i: byte;
begin
mysleep(20);
for i := 0 to 7 do begin
Data := (Data shl 1) or Byte(ReadPortB(dataInPin));
WritePortD(clockPin, True);
mysleep(20);
WritePortD(clockPin, False);
mysleep(20);
end;
Result := Data;
end;