Ich habe mal so eine Erkennung gebastelt, da habe ich auf die fallede Flanke gewartet, dann den Timer gestartet, auf steigende Flanke umgeschalten, bei erkennen den Timer gestoppt, ausgelesen und wieder auf fallende Flanke umgestellt für das nächste Bit.

In main() wird was das dcf-Modul betrifft nur als erstes dcf_init() und dann SetTime() aufgerufen.
Das erklärt nicht warum du den Code in die dcf.h und nicht dcf.c schreibst.