Pardon, das "break" hatte ich übersehen/nicht erwartet.

An für sich sehe ich keinen wirklichen Fehler im Code, aber du solltest dringend aufräumen und in Funktionen auslagern (zum Bleistift der ADC-Code gibt eine wunderbare Funktion).
Zum Debuggen würde ich dir empfehlen, einmal "SerWrite" nach jedem Abschnitt zu platzieren. Ich würde aber jedes komische Verhalten am ehesten deiner kreativen Codestruktur zuordnen.

Wenn du glaubst, dass eine Schleife zu wenig ausgeführt wird, kannst du dir ja die relevanten Variablen ausgeben lassen. Manchmal gibt es bei der Auswertung von Sensordaten unerwartete Überraschungen

mfG
Markus