Yo en su día realicé en una protoboard un circuito, que mediante visual basic, podia encender y apagar 3 relés via puerto serie. Funcionó de maravilla, usando un 16F84A a 4mhz.
No tiene ninguna complicación el asunto... debes de elaborar un protocolo para realizar las transmisiones... es bien simple, yo usé lo siguiente:
"A" = encender rele 1
"B" = apagar rele 1
"C","D","E","F" = idem con reles 2 y 3
Yo no implementé la lectura de puertos... pero tampoco debe tener demasiada complicacion, a botepronto se me ocurre:
"LEER" = Orden de lectura
>Y seguidamente envia un string, suponiendo los puertos como letras<
"A0B0C0D0E1F1G1H1" (A...H serian los bits del puerto, y (0,1) seria el estado)
> Podemos enviar un simple byte, pero si por casualidad fuera "13", recibiriamos un "enter", y bueno, cuestion de gustos...
Bueno, no es gran cosa, pero yo lo hubiera hecho asi... salu2
PD: Respecto a los relés, excitalos mediante un transistor cuya base esté conectada a un pin del PIC , mediante una resistencia de 1K.