Die Abfrage steckt in der Zeile
> rc_ch[3] = 128 - ((ADC>>2)&0xff);
Es wird das Ergebnisregister ADC abgefragt. Dessen Inhalt wird durch 4
geteilt (die beiden niederwertigen Bits von 10 werden weggeworfen). ADC
als Ergenisregister habe ich noch nie gesehen, ist das ein rel. alter
AVR? Bei moderneren AVR heisst das Register eher ADCW.
> for(unsigned int b = 0; b < 6000;b++){};
Das sieht nach einer sehr alten Source aus. Mit einem modernen WinAVR
oder der aktuellen AVR Studio AVR Toolchain bekommst du da sowieso
Probleme: Die alte Methode per for...; eine Warteschleife zu
programmieren funktioniert wegen Compileroptimierungen nicht mehr
zuverlässig.
Man könnte das mit echten Warteschleifen auf Basis von _delay_ms oder
_delay_us aus der avr-libc umprogrammieren. Oder besser: man wartet bis
der ADC eine Konvertierung abgeschlossen hat und das mit dem
entsprechenden Bit (ADSC) signalisiert.
BTW. Ich verstehe nicht wieso diese Source überhaupt arbeitet. Meiner
Ansicht nach wird einmalig vor der while-Arbeitsschleife eine Single
Conversion angestossen aber später nicht mehr. IMHO misst das Programm
einmal und dann nicht mehr.
Zum ADC gibt es ein schönes Tutorial hier gleich um die Ecke. Arbeite
das an einem kleineren, eigenen Beispiel durch und du siehst wie das im
Code oben gemacht wird.