Цитата
Правильно сказано. Изначально Status.RXcurrentByte == 0. Вы приняли первый символ, записали его в буфер, увеличили Status.RXcurrentByte (стало 1). А потом читаете a = Status.RXbuffer[Status.RXcurrentByte-2];
Это на первой итерации. Приходит несколько байтов и необходимо знать какой байт пришел предыдущим, чтобы обнаружить последовательность окончания пакета. На второй итерации, например, выражение
a = Status.RXbuffer[Status.RXcurrentByte-2]
уже имеет смысл.
Код
Кто "он"?
Отладчик