submariner wrote: wazne jest tez aby napiecie na wejsciu analogowym atmegi nie przekraczalo napiecia referencyjnego
...ale chyba nie dlatego, że jest to niebezpieczne dla układu?
Dodano po 34 [minuty]:
Quote: Sory PANMACHANIK. Jednak zostanę przy LM35.
Teraz też mam problem, mianowicie: jak rozbić wartości pomiaru LM35 na dziesiątki, jedności, i części dziesiętne?
Chodzi o to, że nie mogę wziąć wszystkiego razem, bo muszę w tedy bawić się w pisanie wartości wyświetlenia dla każdej oddzielnie ( 00.0 C, 00.1 C, 00.2 C...).
Możesz zrobi to np w ten sposób:
1. Odejmujesz od wartości przetworzonej 100 tak dlugo jak wynik roznicy jest dodatni, zliczasz to ile razy odejmowałeś, liczba zliczonych działań są setkami
2. odejmujesz od wyniku teraz 10 tak długo jak wynik różnicy jest dodatni, ilość działań jest wartością dziesiętną
3. robisz to samo dla jedności
wrzucam fragment mojego kodu jakbyś zachciał pobawić sie w asm. Co gorąco polecam. Sam teraz tworze sobie termometr.
Code:
.def temp1, r16
.def temp3, r18
.def przetwornik, r8
bajt_na_ascii:
push przetwornik
ldi temp3,0 //zeruj zmienna temp3
bajt_na_ascii_1:
cpi przetwornik, 100 //testuj wartosc po odejmowaniu
brmi bajt_na_ascii_2 //jesli ujemny to skocz (wyjescie z petli)
subi przetwornik, 100 //jesli dodatni to odejmij oraz
inc temp3 //inkrementuj zmienna temp3
rjmp bajt_na_ascii_1
bajt_na_ascii_2:
ldi temp1, 48
add temp3, temp1 //zamien liczbe w temp3 na kod ascii
sts temperatura, temp3 //zapisz pierwszy znak ascii do ramu
ldi temp3,0
bajt_na_ascii_3:
cpi przetwornik, 10
brmi bajt_na_ascii_4
subi przetwornik, 10
inc temp3
rjmp bajt_na_ascii_3
bajt_na_ascii_4:
ldi temp1, 48
add temp3, temp1
sts (temperatura+1), temp3
ldi temp3,0
bajt_na_ascii_5:
cpi przetwornik, 1
brmi bajt_na_ascii_6
subi przetwornik, 1
inc temp3
rjmp bajt_na_ascii_5
bajt_na_ascii_6:
ldi temp1, 48
add temp3, temp1
sts (temperatura+2), temp3
pop przetwornik
ret
DSEG
.org 0x60
temperatura: .BYTE 3
Podprogram "rozbija" liczbe z rejestru "przetwornik" na setki, dziesiątki, jedności. Zamienia je na kod ascii po czym zapisuje w kolejnych komórkach ramu[/quote][/code]