No es muy dificil, creo.
Para las temporizaciones durante las cuales saldrá el tren de pulsos usa un TMR por interrupción.
A grandes rasgos podría ser:
- Usa variables para las diversas temporizaciones: x, y, z, a, b, ....
- Si x=1: Cargar el TMR para una determinada temporización. Si la temporización es larga deberás usar variables auxiliares para repetir la rutina de desbordamiento.
- Cuando finalice la temporización pasar x=0
- Mientras (while) x=1 realizar el programita del tren de pulsos
- Cuando finalice la temporización hacer un delay_ms() para el tiempo de silencio.
- Idem para otras temporizaciones.
No sé si entenderás la idea, de palabra es un poco complicado de entender.
Un saludo