Hola, hay que aclarar un detalle, sin entrar en ánimo de filosofar.
Una señal recibida jamás podría ser adelantada. Ya que no puedes recrear una señal antes de que sea recibida! Salvo que se conozca la periodicidad del evento y poder sincronizar con una señal local(PLL), pero es otro tema.
Más bien, siempre podrás atrasarla, una vez recibida.
Bueno, una forma de hacerlo es utilizar una interrupción que detecte cambio de estado en una entrada, luego disparar un timer, y luego de X tiempo, provocar un evento para producir la señal retrasada.