Skaf Как уже сказали необходимо исключить ситуации типа этой: Status.RXbuffer[Status.RXcurrentByte-2] - и не важно, что на каком-то из шагов это корректно.
Во вторых, вы всё же неправильно понимаете назначение слова volatile. Переменной
a в обработчике ни к чему быть как volatile. А вот всем переменным структуры, учавствующих в обработчике, очень может пригодиться быть volatile. Изучите этот вопрос подробно.
Больше полагайтесь на элегатные,короткие алгоритмы, а не на отладчик

.