ATmega a C#? To je pěkně hnusná kombinace
Takže máš v matici osm sloupců po osmi řádcích. Budu předpokládat že port A je výstupní, a port B vstupní, na A jsou připojené sloupce a na B řádky. Jestli je to jinak na věci nic nemění, princip je vždy stejný, jen si to přeházíš podle toho jak to máš připojené.
Čtení bude probíhat tak, že do jednotlivých sloupců posíláš jedničku, tedy že na výstupní port A zapisuješ postupně čísla 1, 2, 4, 8... Prostě mocniny dvojky, což se dá provést jednoduchým posunem vlevo nebo vpravo, podle toho co se ti líbí víc.
A po každém tom zápisu se podíváš jestli se na portu B neobjevila nějaká hodnota. Podle toho na kterém řádku je stisknuté tlačítko, tak na tom bitu bude jednička. Není-li stisknuté žádné ve vybraném řádku, bude na portu B nula.
A to jestli je vůbec nějaké stisknuté zjistíš úplně jednoduše, pošleš tu jedničku do všech sloupců najednou, tím že do portu A zapíšeš číslo 255 (asi víš jak vypadá ve dvojkové soustavě), a když na portu B bude cokoliv jiného než nula, víš že je něco stisknuté. Co, to potom zjistíš předchozím způsobem.