Hi, in deiner Routine readadc ()
kommt vor:

return ADCW;

Hol die die Werte sicherheitshalber einzeln in der richtigen Reihenfolge (->Datenblatt)
und gib sie dann erst zurück
Ich merk mir die richtige Folge nie, aber es ist heikel, das ist sicher.