Hallo Zusammen,
ich möchte einer einfache Tasterabfrage (3x4 Matrixtastatur) mit dem
mega16 realisieren. Am PC0 gebe ich ein Signal aus und am PC3/PC4 möchte
ich den Zustand abfragen und daraufhin eine LED ein bzw. ausschalten
(PD7).
Mein Problem, er macht es nicht. Am PC3 liegen 5V an und an PC4 0V
(beides dauerhaft). Wenn ich die entsprechenden Tasten drücke ändern
sich auch die Signale an PC3/4 dementsprechend, er verarbeitet es aber
nicht.
Kann mir da jemand helfen? Gibt es bei dem mega16 noch irgendwas zu
beachten, denn mit einem mega8 habe ich fast die gleiche Schaltung schon
zum laufen gebracht?!
1 | #include <avr/io.h>
|
2 |
|
3 | #define Zeile1 PINC & (1 << 3)
|
4 | #define Zeile2 PINC & (1 << 4)
|
5 |
|
6 | int main(void)
|
7 | {
|
8 | DDRC = (1 << DDC0)|(1 << DDC1)|(1 << DDC2); // PC0,PC1,PC2 als Ausgang
|
9 | DDRD = (1 << DDD7); // PD7 als Ausgang
|
10 | DDRC &= ~ (1 << DDC3)|(1 << DDC4)|(1 << DDC4)|(1 << DDC4); // PC3,PC4,PC5,PC6 als Eingang
|
11 |
|
12 | while(1)
|
13 | {
|
14 | PORTC |= (1 << 0); //Spalte 1 on
|
15 | if ( Zeile1 )
|
16 | {
|
17 | PORTD |= (1 << 7); //LED ein
|
18 | }
|
19 | if ( Zeile2 )
|
20 | {
|
21 | PORTD &= ~(1 << 7); //LED aus
|
22 | }
|
23 | }
|
24 | }
|