Ну во-первых DDRA отвечает за напраление - тройка стоит и 2 бита работают. DDRx ставится вначале и без особой нужды не трогаются.
Выходы выставляются через PORTx
во-вторых - опрос IO в свитче не лучшая практика, лучше сбросить все-таки в переменную и от этого плясать. Входы могут изменится во время обработки.
в-третьих более 4-5 case городить не стоит, в таких случаях лучше получать значения табличным методом.
(2-3) на результат не влияют и относятся к стилю программирования,
которое у Кертиса отсутствует как класс