Mam problem z obsługą klawiatury matrycowej 3x4 z diodami. Poglądowy schemat poniżej. Przy czym nie zawiera on dodatkowego kondensatora na każdym przełączniku oraz jest dla wersji klawiatury 4x4.

Klawiatura podłączona do standardowej płytki EVB5 z procesorem Atmega32A za pomocą portu C(0-7) oraz D2 - przerywanie INT0
Mam następujący kod do obsługi tej kombinacji:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Problem polega na tym, że zwracana liczba przez funkcję
FindKey(void) jest zawsze wartością z ostatniego wiersza. Tak jak by, to co jest przed komentarzem
//wiersz 4 nie było wykonywane. Czyli ciągle dostaje wartość 10,11 lub 12. Piny C 0-3 reagują prawidłowo. Natomiast Piny 4-7 reaguje tylko ten który jest ostatni w funkcji FindKey(). Czyli w podanym kodzie będzie to 7. Moje pytanie jest, co przeoczyłem lub źle zrobiłem? Dlaczego jedna tylko kolumna jest sprawdzana?