Для начала - у Вас скорее всего ошибка в последнем if -
вместо бинарного-битового
используется логический оператор "И" (&&). А должен быть (&), те бинарный.
Поэтому, в зависимости от того, как "сложатся" звезды на P2IN, контроллер может спать практически вечно.
---
Для проверки BIT5 - что соответствует битовой маске 00100000 == 0x20
Код
if( P2IN & 0x20 )
Для работы с битами никогда не используйте && (логический).
Используйте в векторе
Код
_BIC_SR_IRQ(LPM3_bits); // LPM3_EXIT
По поводу кол-ва циклов программирования для F169.
Встречал хорошо запрятанную в DS цифру 10000 или 100000. Даже если 10т - это очень много,
на отладку хватит. У меня за 5-6 лет еще ни один процессор "не перебрал", а перепрошиваю по 10 раз на день.