Si revisas la documentacion del 16F877A vas a notar que este micro tiene solo un modulo MSSP, que puede ser configurado para implementar ya sea I2C o SPI, por lo que uno de los dos protocolos debe ser implementado por software (generalmente el mas lento: I2C). En realidad es posible implementar los dos protocolos simultaneamnete en hardware pero es muy complicado y requiere muchas consideraciones especiales tanto en hardware (pues ambos protocolos comparten los pines RC3 y RC4) como en software (ya que se deben crear rutinas de configuracion que hagan el cambio de un protocolo al otro).
Cuando se implementa un protocolo por software significa que se debe realizar TODO el manejo de las señales desde cero. Es decir se debe crear rutinas de inicio, parada, datos, relog, etc. mediante programacion. Esto es diferente a usar el modulo interno, el cual hace todas estas tareas de manera transparente para el usuario, por lo que es mucho mas facil.
El compilador que usas, MikroC Pro, tiene incluidas varias librerias tanto para I2C como para SPI, las relevantes para tu caso serian: SPI, I2C, Software_SPI y Software_I2C.
Saludos