Nicht schön, aber es funktioniert
Procedure ReadStatus; // Einlesen und aufbereiten der C&RStatus-Variablen
Var D1, D2, Counter : Byte;
Begin
D1:=PinB; // --> R8 C8 R7 C7 R6 C6 R5 C5
D2:=PinF; // --> C4 R4 C3 R3 C2 R2 C1 R1
SetBit(CStatus.7,D1.1); // CStatus --> Charge Slot 8,7,6,5,4,3,2,1
SetBit(CStatus.6,D1.3);
SetBit(CStatus.5,D1.5);
SetBit(CStatus.4,D1.7);
SetBit(CStatus.3,D2.0);
SetBit(CStatus.2,D2.2);
SetBit(CStatus.1,D2.4);
SetBit(CStatus.0,D2.6);
SetBit(RStatus.7,D1.0); // RStatus --> Ready Slot 8,7,6,5,4,3,2,1
SetBit(RStatus.6,D1.2);
SetBit(RStatus.5,D1.4);
SetBit(RStatus.4,D1.6);
SetBit(RStatus.3,D2.1);
SetBit(RStatus.2,D2.3);
SetBit(RStatus.1,D2.5);
SetBit(RStatus.0,D2.7);
End ReadStatus;
Dauert ca. 32µs auf einem XMega256 @ 32 MHz.
Gruss
Harry
Code
Procedure ReadStatus; // Einlesen und aufbereiten der C&RStatus-Variablen
Var D1, D2, Counter : Byte;
Begin
D1:=PinB; // --> R8 C8 R7 C7 R6 C6 R5 C5
D2:=PinF; // --> C4 R4 C3 R3 C2 R2 C1 R1
SetBit(CStatus.7,D1.1); // CStatus --> Charge Slot 8,7,6,5,4,3,2,1
SetBit(CStatus.6,D1.3);
SetBit(CStatus.5,D1.5);
SetBit(CStatus.4,D1.7);
SetBit(CStatus.3,D2.0);
SetBit(CStatus.2,D2.2);
SetBit(CStatus.1,D2.4);
SetBit(CStatus.0,D2.6);
SetBit(RStatus.7,D1.0); // RStatus --> Ready Slot 8,7,6,5,4,3,2,1
SetBit(RStatus.6,D1.2);
SetBit(RStatus.5,D1.4);
SetBit(RStatus.4,D1.6);
SetBit(RStatus.3,D2.1);
SetBit(RStatus.2,D2.3);
SetBit(RStatus.1,D2.5);
SetBit(RStatus.0,D2.7);
End ReadStatus;
Dauert ca. 32µs auf einem XMega256 @ 32 MHz.
Gruss
Harry