8 дискретных входов -- 128 вариантов значений.
Как вариант, подключать кнопки через диоды. Так, чтобы одна кнопка замыкала несколько входов. А в программе декодировать.
"Вешаем три кнопки на два входа":
Код:
Вх1 | Вх2 | Кнопка
0 | 0 | кнопки отпущены
1 | 0 | нажата 1
0 | 1 | нажата 2
1 | 1 | нажата 3
Аналогично, на 3 входа можно повесить 7 кнопок.
На 4 входа -- 15 кнопок и т.д.
Минус в том, что одновременное нажатие будет обрабатываться неправильно. В примере выше, одновременное нажатие кнопок 1 и 2 распознается как "нажата кнопка 3".