Какого кода? Обычно он размазан по проекту типа обычно приемник в прерывании, обработчик протокола где-нить в основном цикле, плюс кучка ушей специфичных для проца, задачи, протокола.
Вот примерчик собсно приемника из старого проекта - с адресацией, байтстаффингом, контролем пакетов и т.п.
//void UART_RX(void) { _i = RCREG; if (_i == UART_Address) { UART_State = 1; UART_CRC = UART_Address; UART_ptr = 0; } else if (_i == 0x7D) { UART_State = 0; } else { if (UART_ptr >= Max_RX_String_Length) { UART_State = 0; } switch (UART_State) { default: UART_State = 0; case 0: break; case 1: switch (_i) { case 0x7F: UART_State = 2; break; case 0x7E: UART_State = 0; UART_ptr--; #ifdef __UART_CRC__ UART_CRC -= RX_Buffer[UART_ptr]; if (RX_Buffer[UART_ptr] == UART_CRC) #endif { #include "..\network.thr\protocol.c" } break; default: RX_Buffer[UART_ptr++] = _i; UART_CRC += _i; break; } break; case 2: UART_State = 1; switch (_i) { case 0x00: RX_Buffer[UART_ptr++] = 0x7F; UART_CRC += 0x7F; break; case 0x01: RX_Buffer[UART_ptr++] = 0x7E; UART_CRC += 0x7E; break; case 0x02: RX_Buffer[UART_ptr++] = 0x7D; UART_CRC += 0x7D; break; case 0x03: RX_Buffer[UART_ptr++] = 0x7C; UART_CRC += 0x7C; break; case 0x04: RX_Buffer[UART_ptr++] = 0x7B; UART_CRC += 0x7B; break; case 0x05: RX_Buffer[UART_ptr++] = 0x7A; UART_CRC += 0x7A; break; case 0x06: RX_Buffer[UART_ptr++] = 0x79; UART_CRC += 0x79; break; case 0x07: RX_Buffer[UART_ptr++] = 0x78; UART_CRC += 0x78; break; default: UART_State = 0; break; } break; } } }