Převodník: Čtení teplotního čidla LM35DZ a zobrazení na LCD

Tak to zkus třeba takhle :

        ldi Temp, (1<<REFS1)|(1<<REFS0)|(1<<ADLAR)				; Interní ref 2,56V, Zarovnat doleva, ADC0
        out ADMUX, Temp

        ldi Temp, (1<<ADEN)|(1<<ADFR)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)
		; Povolit ADC, FreeRunningMode, ADC int. enable, 125kHz prescaler
        out ADCSRA, Temp

        sbi ADCSRA, ADSC ; spustit ADC

Hodnotu AD převodu ukládám v přerušení :

ADC_INT: 					; ADC Conversion Complete Handler
		in Hodnota_AD ADCH
		reti

A ještě definice registrů :

.def Temp=R16
.def Hodnota_AD=R8

V programu používám registry jako proměnné, protože jich moc nepotřebuju, pokud by bylo třeba, lze hodnotu po přečtení z AD převodníku uložit do RAM. Navíc se spokojím jen s 8-bitovým převodem. Ve Tvém přípdě je to (v tomto nastavení) 0=0V 255=2,56V. Rozsah by se dal upravit buď zesílením signálu z čidla pomocí OZ tak, aby bylo při 0,5V (50 stupňů) = 2,50V na vstupu do převodníku. Pak dostáváš hodnotu AD převodníku/5 = teplota. Totéž bys dostal, pokud signál z čidla pošleš na AD přímo a pro AD převodník použiješ externí referenční napětí 0,512V.