Schau dir doch den C-Code der ASURO Library an, daraus lässt sich doch ganz gut ableiten, wie der entsprechende Assembler-Code aussehen müsste.
Bspw. der linke Liniensensor wird per ReadADC(IR_LEFT,0) abgefragt. ReadADC sieht so aus:
Code:
unsigned int ReadADC(unsigned int mux, unsigned int sleep)
{
if ((mux) == (BATTERIE))
ADMUX = (1 << REFS0) | (1 << REFS1) | (mux); // interne 2.56V Referenz
else
ADMUX = (1 << REFS0) | (mux); // Referenz mit externer Kapazitaet
if (sleep)
Sleep(sleep);
ADCSRA |= (1 << ADSC); // Starte AD-Wandlung
while (!(ADCSRA & (1 << ADIF))) // Ende der AD-Wandlung abwarten
;
ADCSRA |= (1 << ADIF); // AD-Interupt-Flag zuruecksetzen
return ADC; // Ergebnis als 16-Bit-Wert
}
Die SFRs, die da gesetzt und gelesen werden übernimmst du in Assembler - et voila!
Lesezeichen