Ich glaube, du hast mich nicht richtig verstanden.

Die Taster sind alle an einem normalen Port. Ein Interrupt, der z.B. alle 10 Millisekunden ausgeführt wird, springt in ein Unterprogramm, in dem die gesetzten Bits in eine Variable übergeben werden.
HIER kommt dann eine logische Oder-Verknüpfung, da die bisher gesetzten Bits in der Variable bleiben und nur die per Tasten hinzugekommenen eingetragen werden sollen.