Matrix 3x7 Auswerten / AtMega 8515

Gast #1906333
Lesenswert?

Hallo,

Ich habe hier ein 7x3 Tasten-Matrix die ich gerne über meinen AtMega 
auswerten lassen will.

Das Prinzip der Tasten-Matrix ist mir klar, die 7 Zeilen mit je 3 Tasten 
sind über 10K an VCC verbunden und sitzen an PC0-7

Die 3 Spalten sitzen an PB0 - PB2 und ziehen jeweils den Pegel auf "+5V" 
wenn eine der Tasten in der Spalte gedrückt wird.

Wie kann ich denn nun die Tastenmatrix bequem in C auswerten?

Hab bereits mit dem Code schon angefangen, aber komm leider nicht mehr 
weiter..

Soll ich mit einem Timer Arbeiten? Evtl. mit Interupts?

Danke!
1
#include <stdlib.h>
2
#include <avr/io.h>
3
#include "lcd_lib.h"
4

5
#define KEY_COL0 PORTB2
6
#define KEY_COL1 PORTB1
7
#define KEY_COL2 PORTB0
8
#define KEY_ROW0 PORTC0
9
#define KEY_ROW1 PORTC1
10
#define KEY_ROW2 PORTC2
11
#define KEY_ROW3 PORTC3
12
#define KEY_ROW4 PORTC4
13
#define KEY_ROW5 PORTC5
14
#define KEY_ROW6 PORTC6
15
#define KEY_ROW7 PORTC7
16

17

18
void init_keypad(void)
19
{
20
  // PC0 - 7 / Zeilen
21
  // PB0 - 2 / Reihen
22

23
  DDRC = 0xff; // PC0-7 Ausgänge
24
  DDRB &= ~ ( (1<<DDB0) | (1 << DDB1) | (1 << DDB2)); // PB 0 - 2 Als Eingänge setzen;
25
  PORTB |= (1<< PB0) | (1<< PB1) | (1<<PB2);
26
}

Ab hier komm ich leider nicht mehr weiter!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren