Para poder programar un I2C por software en un PIC16F84A , primero tenes que saber como es que funciona un I2C. Luego es cambiar el estado de un pin en ciertos tiempos (es la unica programacion que necesitas hacer). Sino busca algun codigo que te sirva. Que seguramente vas a copiar, pegar y rogar que funcione.
La pregunta obvia es... ¿Por que alguien en su sano juicio usaría un PIC16F84A? Siendo un microcontrolador viejo y caro.
No creo que sea correcto explicarte de cero como es que funciona el I2C, deberias buscar algo y venir con una pregunta mas concreta.
En fin... aprende como funciona el I2C. Material de como funciona el I2C hay de sobra.