Den Datenempfang sollte man im Interrupt machen. Der Comperator löst am einfachsten ein ICP event aus. In der ISR wird dann die Zeit seit dem letzen ICP mit 500 us verglichen und etweder eine 0 oder 1 als daten erkannt und in einem Puffer gesammelt. Wenn ein Byte voll ist kann man dann dem hauptprogramm signalisieren das Daten da sind. Ganz logisch ist die Beschreibung des Protokolls oben nicht, denn bei 400us high+800us low komme ich immer auf 800us. Man müßte noch klären welche Zeit wirklich für die daten wichtig ist (Periode, high oer low). Je nach dem welche Zeit wichtig ist, muß dann noch die ICP Flanke umgestell werden.