// 3. ANALIZA MATRYCY: Jeśli przeskanowaliśmy wszystkie 4 wiersze
if (keyboard_counter >= 4)
{
unsigned char active_r = 0xFF; // 0xFF oznacza brak wciśniętego klawisza
unsigned char active_c = 0xFF;
char r;
keyboard_counter = 0; // Reset licznika dla następnego cyklu
// Szukamy PIERWSZEGO wciśniętego klawisza (priorytet od Rzędu 0, Kolumny 0)
for (r = 0; r < 4; r++) {
if ((matrix_state[r] & 0x01) == 0) { active_r = r; active_c = 0; break; } // Znaleziono? Przerwij pętlę!
if ((matrix_state[r] & 0x02) == 0) { active_r = r; active_c = 1; break; }
if ((matrix_state[r] & 0x04) == 0) { active_r = r; active_c = 2; break; }
if ((matrix_state[r] & 0x08) == 0) { active_r = r; active_c = 3; break; }
}
// 4. WYNIK: Jeśli jakikolwiek klawisz jest wciśnięty, wyświetl go
if (active_r != 0xFF) {
// Wyświetla pierwszy znaleziony klawisz
led_display[0] = key_codes[active_r][active_c];
}
// Brak bloku "else" oznacza, że po puszczeniu wszystkich klawiszy
// ekran nadal będzie pokazywał ostatnio wciśnięty znak (Zadanie 2).
}