Ich fürchte, der Code wird funktionieren, nur deine Eingänge
lesen nicht das zurück, was du erwarten würdest.
Reduzier das Programm doch erstmal auf einen einfachen Mirror, der die
Eingänge von PINB auf die Ausgänge von PORTC spiegelt. Da du ja LEDs
dran hast an C, solltest du auf diese Weise gut erkennen können, was
denn genau an PINB reinkommt.
1 | #include <avr/io.h>
|
2 |
|
3 | int main(void)
|
4 | {
|
5 |
|
6 | PORTB = 0xFF; // pull ups for key inputs PortD2 and portD3
|
7 |
|
8 | DDRC = 0xFF; // outputs for LEDs
|
9 | PORTC = 0xFF; // LEDs off
|
10 |
|
11 | for(;;)
|
12 | {
|
13 | PORTC = PINB;
|
14 | }
|
15 | }
|
p.s.: Meine Glaskugel sagt übrigens, dass deine Eingänge einfach nur
low-aktiv sind, d. h. du musst entweder mit ~PINB arbeiten oder
statt 0x01, 0x02 usw. auszuwerten 0xFE, 0xFD usw.