Direkte Programmierung => arbeiten mit Registern ohne das Arduino Framework.
Taster sollten nicht unbedingt an Interrupts angeschlossen werden, da die Interrupts dafür viel zu schade sind. (Der Interrupt Kontroller würde sich langweilen ;-))
So programmiert man Mikrocontroller allgemein/direkt, ohne Framework:
//2 Pins als Ausgang deklarieren und einen als Eingang
DDRA = 0b00000011; // 6 Eingänge 2 Ausgänge
//den ersten Pin auf "High" setzen
PORTA |= (1 << PA0);
//den gleichen Pin auf "Low" setzen
PORTA &= ~(1 << PA0);
//überprüfen ob der Eingang gesetzt ist
if(PINA2) {
//Ausgang setzen
PORTA |= (1 << PA1);
} else {
PORTA &= ~(1 << PA1);
}