Данный вопрос надо решать через прерывание. Возникло событие (нажатие кнопки) - останавливаем все вычисления, обрабатываем событие, складываем результат в специальную ячейку памяти и снова отдаем управление программе. Работает это настолько быстро, что остановка программы не замечается.
У Алекса Гайвера хорошие уроки на эту тему. Например,
о прерываниях и
о клавиатурах. Скачайте готовую библиотеку, пример, отладьте его до рабочего состояния, а потом модифицируйте под себя.