1. определения left и up у Вас одинаковые.
2. программа так и должна работать пока Вы не скажете как она должна работать по Вашему.
3. Попробуйте доработать так:
- уберите PORTD = 0x00; в цикле.
- измените четыре оператора if
Код
if (signal(left) | signal(select))
on(led_r1);
else
off(led_r1);
остальные три аналогично....
последний if уберите.