mal abgesehen davon.
Ich will dich ja nicht bevormunden, aber
1  |       t=(TCNT1)*32;                    //Eine inkrementierung des Timers entspricht 32us
  | 
2  |       if((t>316)&&(t<=526)
  | 
da in TCNT1 nur eine ganze Zahl stehen kann, kann daher t nur ein 
ganzzahliges Vielfaches von 32 sein. Das Ergebnis kann daher gar nicht 
zb 317 sein, da 317 kein Vielfaches von 32 ist. Die nächst kleinere 
Zahl, die bei der Multiplkation entstehen kann, ist 288. Dann kommt 
lange nichts und die nächste größere Zahl, die entstehen kann ist 320. 
(das eine mal hat TCNT1 den Wert 9 und das andere mal den Wert 10). Alle 
Werte zwischen 288 und 320 können überhaupt nicht auftreten. Das ist 
mathematisch überhaupt nicht möglich.
Jetzt muss man sich aber fragen: was bringt mir dann eigentlich die 
Multiplikation mit 32?
Und die Antwort drauf lautet: Überhaupt nichts. Gar nichts.
Denn ob du
1  |       t=(TCNT1)*32;                    //Eine inkrementierung des Timers entspricht 32us
  | 
2  |       if((t>316)&&(t<=526)
  | 
schreibst, oder ob du
1  |       t= TCNT1;
  | 
2  |       if( (t > 9) && (t < 17)
  | 
schreibst, kommt wegen des eingeschränkt möglichen Wertebereichs aufs 
selbe raus.
Mit einem kleinen Unterschied, der mglw. entscheidend sein kann. Das 
Eregbnis der Multiplikation mit 32 kann dir unter Umständen, wenn der 
TCNT1 Wert hoch genug wird, den Zahlenbereich eines int16_t sprengen. Ab 
dann rechnest du dann mit falschen Werten weiter.