Hallo,
da ein Register nur 8 Bit breit ist wird der gemessene Wert einfach auf
2 Register aufgeteilt. Zitat aus dem Datenblatt:
"As the ADC generates a 10-bit result, two data registers, ADCH and
ADCL, must be read to get the result when the conversion is complete."
Die ersten 8 Bits stehen im Register ADCL, die restlichen 2 in ADCH.
Wenn du 10 Bit PWM verwendest, kannst du den Wert also direkt
weiterverwenden indem du ADCH/ADCL nach OCR1H/OCR1L kopierst. Um den
Messwert in 8 Bit umzuwandeln, müssen beide Register um 2 Bits nach
rechts geschoben werden, so dass Bit 0 und Bit 1 aus ADCL wegfallen und
Bit 0 und Bit 1 aus ADCH nach Bit 6 und Bit 7 in ADCL kopiert werden.
Beispiel:
;10 Bit-Wert in Register 16 und 17 einlesen:
in r16, ADCL
in r17, ADCH
;ein Bit bei r17 nach rechts rausschieben und in Carry speichern:
ror r17
;ein Bit bei r16 nach rechts rausschieben und gleichzeitig links
;das Carry-Bit wieder reinschieben:
ror r16
;das Ganze nochmal:
ror r17
ror r16
Gruß
Andreas