Por software, a través de los Timers o del CCP.
Si supongo que es la linea, entonces usaría la linea (220v) conectarlo al PIC con un par de diodos, así tener los 50Hz y la referencia, de ahí es solo contar tiempo desde que detectas un flanco de subida o bajada.
Es decir, detectas el flanco de subida, esperas 5ms ( con un timer ) y activas tu salida. Luego esperas el flanco de bajada, otros 5ms y desactivas tu salida.
Si necesitas generar 2 señales, desfazadas entre si por 90º, podrias hacer 2 cosas.
Con un timer lograr los 10ms de retardo y otro timer para el tiempo luego de esos 10mS asi desfazas a 90º. ( o usar uno con 5ms y llevar la cuenta para ver cual es la que le toca subir/bajar)
O tomar los 50Hz de la linea, usar el flancos para activar una salida y usar un timer para el desfase a 90º para la otra señal.
Si algun otro posee otra idea mejor, es todo lo que se me ocurre ahora