ADC + prepocet v ASM

Zdravim,
v ASM jsem se dostal az k ziskani hodnoty z AD pomoci registru ADCL, ADCH. Dale bych rad dostal primo vyslednou hodnotu ADC v desitkove hodnote pomoci nasledujiciho prepoctu: ADC = (ADCH * 256) + ADCL , ale toto je u 8mi bitovych registru pro me zatim neprekonatelne pro moji hlavu. Poradi nekdo? Co s nize uvedenym kodem dale?

In R16, ADCL ; Low ADC
In R17, ADCH ; High ADC
LDI R18, $00 ; Low pro 256
LDI R19, $01 ; High pro 256

Jak toto mezi sebou vynasobit? Diky predem za reakci.

Podobnými zmatky v hlavě jsem procházel i já v začátcích.
Dostal jsi hodnotu ADC převodu v registrech ADCL, ADCH.
Řekni jak chceš tuto hodnotu dál použít.
Chceš ji zobrazit na Lcd displeji?
Nebo na PC terminálu?
Nebo ji použít v dalším kódu?

Kompletni vypocet bude vypadat nasledovne:
hodnotaI = (ADC * 118) / 1000

Takze pokud to nechame v HEXa, vypocet bude:
hodnotaI = (ADC * 76h) / 3E8h

Vyslednou hodnotou je hodnota proudu, ktery prochazi Hall sondou pripojenou k AD.

Diky.

Jeste jsem opomenul, vysledek bude orezan na 2 des. mista a vyobrazen na 7 seg. displeji, ktery pracuje v multiplex rezimu. Toto vse jiz pracuje, jenom ty vypocty …

Na to jsou v asm matematické rutiny.

Pomocí podprogramu “mul_16_16” vynásobíš ADC*118.
Jako první činitel zadáš ADCL a ADCH.
Jako druhý low(118) a high(118).

Výsledek bude čtyřbajtový, ale nejvyšší bajt bude 0.
Tři nižší bajty převedeš na BCD hodnoty podprogramem bin_bcd24.

Dělit tisícem nemusíš, stačí z výsledku vybrat příslušný počet číslic a vhodně umístit desetinnou tečku.
avr_mat.inc (2.79 KB)

Mnohokrat dekuji za pomoc. Timto se vse usnadni. Diky.