Hallo,
Du kannst zum auslesen des ADC auch direkt auf die beiden Ports mit ADC zugreifen, statt ADCL und ADCH, denn dann stimmt auf jeden Fall die Reihenfolge wie man das macht.

Ich würde den ADC nicht jedesmal in der Schleife deaktivieren.

Und dann wartet man auf das Bit ADIF bis der ADC fertig ist, nicht ADSC, denn so wird eigentlich nicht gewartet, so wie das bei Dir steht !

Hast Du schon mal ins Wiki, oder auch Datenblatt geschaut, wie das eigentlich geht mit dem ADC ?