So ungefähr, bzw richtig.

Die Hauptschleife wartet solange bis h1=10 (0,01Sek vergangen) ist und bildet dann aus 16 adc-Messungen den Mittelwert. Und dies für 5 ADC-Kanäle.

Also alle 10ms das 16mal-Messen und Mittelwertbilden von 5 ADC-Kanälen. Da kommt dann noch mit den ermittelten Variablen ein paar Rechnungen hinzu, aber das ist zu vernachläßigen was die Geschwindigkeitsprobleme angeht.

Knackpunkt ist einfach Getadc(x). Dieser Funktionsaufruf bremst alles extrem runter.

Somit scheint mir diese Funktion entweder vollkommen falsch von mir benutzt zu werden, oder aber sie ist nicht die Bits wert, die sie belegt..

Besser wäre natürlich den ADC in Freilaufmodus zu starten und in einen ADC_Ready Interrupt Deine Muxkanäle umzuschalten und natürlich die 16 Messungen addieren und dividieren.
Und da habe ich Angst, daß der ADC-Interrupt so oft aufgerufen wird, daß alle anderen Interrupts darunter leiden.
Bzw besteht die Möglichkeit mit Start/Stop ADC (Bascom-Befehl) das irgendwie zu bremsen, daß andere Interrupts (Timer0, Timer1, Icp1 und Ovf1) nicht darunter leiden?