nur ne kurze frage: bin ich soweit richtig? ob das 1 bit nun IO-0 oder IO-7 ist, ist mir egal
1 | program Expander; |
2 | |
3 | var
|
4 | LED : sbit at PORTC0_bit; LED_dd : sbit at DDC0_bit; |
5 | |
6 | // Schreiberegister für die Relais // S0 = L; S1 = H; -Cler = H
|
7 | is_Out : sbit at PORTC1_bit; is_Out_dd : sbit at DDC1_bit; // Beide -OE bei beiden |
8 | Out_dat: sbit at PORTC2_bit; Out_dat_dd: sbit at DDC2_bit; // SR (Chip2.sr = Chip1.q7) |
9 | Out_Cl : sbit at PORTC3_bit; Out_cl_dd : sbit at DDC3_bit; // Clock |
10 | |
11 | Relai : word; |
12 | |
13 | procedure set_Out; |
14 | var Low, Hig : Byte; |
15 | i : Byte; |
16 | begin
|
17 | Low := Lo(Relai); |
18 | Hig := Hi(Relai); |
19 | |
20 | is_Out := 1; // OE am chip = false |
21 | |
22 | for I := 0 to 7 do // zweite 8 Relais (links) |
23 | begin
|
24 | Out_cl := 0; |
25 | Out_dat:= ( Low > 126); |
26 | Low := Low * 2; |
27 | Out_Cl := 1; |
28 | end; |
29 | |
30 | for I := 0 to 7 do // erste 8 Relais (Rechts) |
31 | begin // Low wird weitergeschoben |
32 | Out_cl := 0; |
33 | Out_dat:= ( Hig > 126); |
34 | Low := Hig * 2; |
35 | Out_Cl := 1; |
36 | end; |
37 | |
38 | is_Out := 0; // OE am chip = true; |
39 | end; |
40 | |
41 | |
42 | begin
|
43 | repeat
|
44 | set_Out; |
45 | until false; |
46 | end. |