Hallo,
ich habe ein Zeigerproblem bei dem ich nicht mehr weiterkomme:
1 | #define XPlus 11
|
2 | unsigned int Taster[17];
|
3 | volatile unsigned char *PINTaster[17];
|
4 | .....
|
5 | Taster[XPlus] = PC2;
|
6 | PINTaster[XPlus] = &PINC;
|
7 | .....
|
8 | //Folgendes funktioniert nicht:
|
9 | if (bit_is_set(PINTaster[XPlus], Taster[XPlus])) ...
|
10 | //das funktioniert natürlich:
|
11 | if (PINC, Taster[XPlus])) ...
|
Was aber auch funktioniert ist folgendes:
1 | #define YLED 14
|
2 | unsigned int LED[17];
|
3 | volatile unsigned char *PORTLED[17];
|
4 | .....
|
5 | LED[YLED] = PB2;
|
6 | PORTLED[YLED] = &PORTB;
|
7 | .....
|
8 | void setbit(volatile unsigned char *port, uint8_t wert)
|
9 | {
|
10 | *port |= (1 << wert);
|
11 | }
|
12 | .....
|
13 | setbit(PORTLED[YLED], LED[YLED]) //Hier kann ich den Zeiger auf PORTB ganz normal verwenden....
|
Könnt ihr mir erklären warum in bit_is_set der Zeiger nicht
funktioniert???
Wie muss ich es schreiben das es geht?
Ich danke für eure Mühe!
Gruß,
Andreas