Какого кода? Обычно он размазан по проекту типа обычно приемник в прерывании, обработчик протокола где-нить в основном цикле, плюс кучка ушей специфичных для проца, задачи, протокола.
Вот примерчик собсно приемника из старого проекта - с адресацией, байтстаффингом, контролем пакетов и т.п.
//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;
}
}
}