Moin Ich habe mein erstes Programm für den STK500 geschrieben und natürlich funktioniert es nicht. Gedachte Funktion: Beim drücken der Tasten 1-7 soll die zur Taste gehörende LED angehen und beim drücken der Taste 8 sollen alle LEDs ausgehen. Eigentlich ganz simple dachte ich. Allerdings bin ich nicht nur uC-, sondern auch C Anfänger :-( Tatsächliche Funktion: Ist ganz schnell beschrieben: es passiert nüscht. Ich sehe einfach nicht wo hier der Fehler liegt. Das erstellen und schreiben der hex Datei ist fehlerfrei gelaufen (bis auf eine Meldung: warning: left shift count >= width of type). Kann mir jemand auf die Sprünge helfen? Gruß Michael
1 | #include <avr/io.h> |
2 | |
3 | int main (void) { |
4 | |
5 | DDRA = 0x00; // alle Pins von Port A sind Eingang (Taster) |
6 | PORTA = 0xff; // alle Pins von Port A PullUp-Widerstand auf high |
7 | DDRB = 0xff; // alle Pins von Port B sind Ausgang (LEDs) |
8 | PORTB = 0x00; // alle Pins von Port B auf Low setzen |
9 | |
10 | while(1) { |
11 | |
12 | // Taste 1 gedrückt
|
13 | if ( PINA & 0x01 ) { |
14 | PORTB |= (1 << 0x01); |
15 | } //if |
16 | |
17 | // Taste 2 gedrückt
|
18 | if ( PINA & 0x02 ) { |
19 | PORTB |= (1 << 0x02); |
20 | } //if |
21 | |
22 | // Taste 3 gedrückt
|
23 | if ( PINA & 0x04 ) { |
24 | PORTB |= (1 << 0x04); |
25 | } //if |
26 | |
27 | // Taste 4 gedrückt
|
28 | if ( PINA & 0x08 ) { |
29 | PORTB |= (1 << 0x08); |
30 | } //if |
31 | |
32 | // Taste 5 gedrückt
|
33 | if ( PINA & 0x10 ) { |
34 | PORTB |= (1 << 0x10); |
35 | } //if |
36 | |
37 | // Taste 6 gedrückt
|
38 | if ( PINA & 0x20 ) { |
39 | PORTB |= (1 << 0x20); |
40 | } //if |
41 | |
42 | // Taste 7 gedrückt
|
43 | if ( PINA & 0x40 ) { |
44 | PORTB |= (1 << 0x40); |
45 | } //if |
46 | |
47 | // Taste 8 gedrückt
|
48 | if ( PINA & 0x80 ) { |
49 | PORTB = 0x00; |
50 | } //if |
51 | |
52 | } //while |
53 | |
54 | return 0; |
55 | }
|