Hallo, ich ärgere mich jetzt schon ein Weilchen mit der Porterweiterung herum. Findet jemand den Fehler? Ich hab mich schon durch etliche Beiträge hier, sowie das Datenblatt gelesen und bin nicht wirklich weiter... Den Code von hier: http://www.mikrocontroller.net/articles/Porterweiterungen habe ich noch nicht ausprobiert, wollte das ganze etwas "kompakter" halten. Danke!
1 | int main() { |
2 | uint8_t si; // an: PB 00 1 |
3 | int g; // PB 01 2 |
4 | int sck; // PB 02 4 |
5 | int sclr; // PB 03 8 |
6 | int rck; // PB 04 16 |
7 | |
8 | |
9 | int i; //laufvariable |
10 | |
11 | |
12 | DDRB = 0x00; |
13 | PORTB = 0x00; |
14 | |
15 | |
16 | _delay_ms(1000); |
17 | |
18 | si = 0xf0; //gewünschte ausgabe |
19 | |
20 | |
21 | g = 1; //output disable |
22 | PORTB |= (0x02 & g); |
23 | PORTB |= (0x08 & 0); //shift register cleared |
24 | PORTB |= (0x08 & 1); //sclr - aufnahmebereit |
25 | |
26 | for(i=0; i<8; i++){ |
27 | PORTB |= (0x01 & (si >> (7 - i))); |
28 | |
29 | sck = 1; |
30 | PORTB |= (0x04 & sck); |
31 | |
32 | _delay_us(5); |
33 | |
34 | sck = 0; |
35 | PORTB |= (0x04 & sck); |
36 | |
37 | |
38 | } |
39 | |
40 | rck = 1; |
41 | |
42 | _delay_us(5); |
43 | |
44 | rck = 0; |
45 | PORTB |= (0x10 & rck); |
46 | |
47 | g = 0; |
48 | PORTB |= (0x02 & g); |
49 | |
50 | _delay_ms(500); |
51 | |
52 | while(1){ |
53 | ; |
54 | |
55 | |
56 | } |
57 | |
58 | } |