Yo he probado comunicasiones seriales sin USART, usando como pin RX a RB0 configurado como interrupcion externa,
entonces al detectar un bit de inicio, se ejecutaba la rutina de recepcion...
el hecho es q si no podes usar interrupciones, te sera bastante dificil implementar comunicaciones asincronicas.