Witam ostatnio postanowiłem wykonać prototyp klawiaturki 4x4 i mam problem z programem. Dzieją się dziwne rzeczy oto kod:
Klawiatura ma 4 wiersze W1,W2,W3,W4 oraz 4 kolumny A,B,C,D.
Problem polega na tym, że działa tylko 4 wiersz (W4) , jak go wy komentuje to działa tylko wiersz 3 itd, więc działa tylko to co jest na końcu programu, nie rozumiem dlaczego tak się dzieje. Proszę o jakieś wskazówki.
uint16_t klawiatura(void)
{
volatile uint16_t klaw=0;
CLEAR_W1; //stan niski na wierszy pierwszym i odczytujemy po kolei kolumny
asm volatile("nop");
klaw=(STAN_A?0:1) + (STAN_B?0:2) + (STAN_C?0:4) + (STAN_D?0:8);
SET_W1;
CLEAR_W2;
asm volatile("nop");
klaw=(STAN_A?0:16) + (STAN_B?0:32) + (STAN_C?0:64) + (STAN_D?0:128);
SET_W2;
CLEAR_W3;
asm volatile("nop");
klaw=(STAN_A?0:256) + (STAN_B?0:512) + (STAN_C?0:1024) + (STAN_D?0:2048);
SET_W3;
CLEAR_W4;
asm volatile("nop");
klaw=(STAN_A?0:4096) + (STAN_B?0:8192) + (STAN_C?0:16384) + (STAN_D?0:32768);
SET_W4;
return klaw;
}Klawiatura ma 4 wiersze W1,W2,W3,W4 oraz 4 kolumny A,B,C,D.
Problem polega na tym, że działa tylko 4 wiersz (W4) , jak go wy komentuje to działa tylko wiersz 3 itd, więc działa tylko to co jest na końcu programu, nie rozumiem dlaczego tak się dzieje. Proszę o jakieś wskazówki.