Что-то я мысль не уловил! Но думаю, придется попыхтеть, чтобы такой автомат реализовать на логике.
И все-таки, самое простое, это принять два байта с клавиатуры и запросить прерывание. Все остальное (F0 или E0) - выяснять программно. Кроме того, в обработчике прерывания клавы, выключать прерывания 50гц. нельзя (ну, разве что в самых критических точках). Иначе грош цена таймеру на этом прерывании.
Кстати, при очень большом желании (прости мне Господи крамольную мысль!) можно отказаться от прерывания клавиатуры. Можно по прерыванию 50гц. проверять есть ли байт с клавиатуры. Думаю, если опрашивать клаву каждые 20 млсек, то вряд-ли что пропустишь.