Можно попытаться определить, где висит программа. Например так (независимо, на С написано или на asm).
; тело программы
MAIN
команда_1
...
команда_101 <-- тут breakpoint
...
идти_на_MAIN
; тело обработчика прерывания UART0RX
UART0_RX
команда_1
...
какой-то_цикл
команда_51
...
команда_101 <-- и тут breakpoint
выход_из_прерывания
Запустить это дело, подождать некоторое время и прервать работу (или же работа сама прервется по bp).
Возможны варианты. Основное тело программы (main) не выполняется.. Программа уходит в прерывание, выходит из него и сразу же снова входит. Или же, если в обработчике прерывания есть некий цикл, то возможно зависание внутри него, т.е. не происходит даже выхода из прерывания.
Кстати, очень помогает в некоторых точках программы "дергание" определенной ножкой процессора (простой xor). На осциллографе удобно можно смотреть процесс (не)работы программы