Ich kenn mich zwar nicht mit Pic aus, aber ich nehme mal an, dass er sowohl Hardware zur PWM-Generierung, als auch externe Interrupts, und Timer besitzt.

Ein einfaches Programm würde so ausschauen:

1. PWM mit einer festgelegten Frequenz, Duty-Cycle 50%, damit ist die Zeit, die die Diode leuchten bzw. nicht leuchten soll festgelegt
2. Ausgang des CNY70 an den externen Interrupt, jede Flankenänderung triggert einen Interrupt
3. Kommt eine Änderung von 0-1, wird ein Timer gestartet, bei einer Änderung von 0-1 Timer gestoppt
4. Entspricht der Timerwert der Periode des angelegten Signals (mit einer Toleranz von sagen wir 10%), hast du ein Zug am Gleis. Wenn nicht, dann nicht. Der Timer sollte so ausgelegt werden, dass die erwartete Periode ungefähr 50% des Zählerwerts entspricht. Einen Zählerüberlauf müsstest Du auch irgendwie berücksichtigen.

Da ich wie gesagt mich mit Pic nicht auskenne, kann ich mit keinen weiteren Details dienen...

Selbstverständlich ist ein TSOP1840 wie von vohopri erwähnt, auch zielführend, der ist dür eine Frequenz von 40kHz im IR-Bereich empfindlich. Da bräuchtest Du also noch eine IR-LED, die Du mit 40kHz schaltest.

gruss

pongi