El SPI se basa en 4 lineas (SDI,SDO,SCK y SS). El i2c se basa en dos lineas (SDA,SCL).
Puedes hacer que el pic configure los modulos de i2c o de spi a medida que te hagan falta, pero, el i2c lleva una resistencia en pull-up en cada linea, cosa que no lleva el spi. Con estas resistencias además se limita la velocidad de transmision del bus i2c. Así que es posible que si pones las pull-up porque estás trabajando con el i2c, cuando cambies a spi las pull-up te den problemas.
Dentro del mplab tienes unas librerias, spi_w y i2c_w con las que puedes simular un puerto spi o i2c con cualquier entrada I/O del pic. Pero estas librerias solo son para PIC18 y ademas estan en C.
Ninguno de los dos montados a pelo son fáciles. El i2c tiene señal de ACK que hay que esperar para poder seguir mandando o recibiendo, la ventaja es que la misma linea recibe y envia, y puede llevar varios nodos colgando del bus. El spi tiene dos lineas de enviar y recibir pero es un sistema P2P, o sea que no puede haber mas de uno colgando del bus. Para poder colgar varios dispositivos en el spi hay que montar con salidas aparte, los chip select de cada nodo del bus, con lo que se gastan puertos.
Mi consejo. Cambia de pic, a uno que tenga el i2c y el spi por separado. A ser posible PIC18, encontraras mas ejemplos.
Dews