pisze prosty program w avrstudio
Masz problem? Zapytaj na forum elektroda.pl
From: skasuj <"matti(skasuj)"_at_nospam_o2.pl>
Subject: pisze prosty program w avrstudio
Date: Mon, 10 Oct 2005 20:12:13 +0200
Napisalem cos takiego:
.include "m16def.inc"
ldi r16, high(RAMEND)
out SPH, r16
ldi r16, low(RAMEND)
out SPL, r16
rcall start
rcall nic
start:
ldi r16,5
ret
nic:
ldi r16,0
ret
No i robie build i debug. Program dochodzi do "rcall start" i zamiast
wejść do start przechodzi do "rcall nic". Dlaczego nie wykonuje
podprogramu. Czy coś robię źle?
From: "mIrO" <mIrO_at_nospam_mIrO.mIrO>
Subject: Re: pisze prosty program w avrstudio
Date: Mon, 10 Oct 2005 21:14:00 +0200
Użytkownik "skasuj" napisał w wiadomości
Napisalem cos takiego:
.include "m16def.inc"
ldi r16, high(RAMEND)
out SPH, r16
ldi r16, low(RAMEND)
out SPL, r16
rcall start
rcall nic
start:
ldi r16,5
ret
nic:
ldi r16,0
ret
No i robie build i debug. Program dochodzi do "rcall start" i zamiast
wejść do start przechodzi do "rcall nic". Dlaczego nie wykonuje
podprogramu. Czy coś robię źle?
Ja tu widze dwa podprogramy, ale nie bardzo widze program ;)
To zadziala wg mnie tak:
zaladuje odpowiednia wartoscia SP
skoczy do podprogramu start (zapamietujac LP na stosie)
powroci w miejsce rcall nic (czyli nic)
powroci... do rozkazu znajdujacego sie po rcall nic, czyli do tego ldi :)
a pozniej juz sie moga dziac rozne cuda, zaleznie od tego co bedzie sie
znajdowalo na stosie, z ktorego ten ret sciagnie wartosc do powrotu
proponuje napisac jakis fragment kodu, ktory zapetli program i dopiero w tej
petli cos wykonywac:
main:
;twoj kod z wywoalenim funkcji
rjmp main ; no i to sie tutaj kreci w kolko
;twoje funkcje z powrotemi rozkazem ret
albo:
rcall start
rcall nic
main: ; to powyzej sie wykona, a nastepnie kontroler utknie w
martwej petli
rjmp main
--
pzdr
mIrO
From: skasuj <"matti(skasuj)"_at_nospam_o2.pl>
Subject: Re: pisze prosty program w avrstudio
Date: Mon, 10 Oct 2005 21:37:06 +0200
mIrO wrote:
Użytkownik "skasuj" napisał w wiadomości
Napisalem cos takiego:
.include "m16def.inc"
ldi r16, high(RAMEND)
out SPH, r16
ldi r16, low(RAMEND)
out SPL, r16
rcall start
rcall nic
start:
ldi r16,5
ret
nic:
ldi r16,0
ret
No i robie build i debug. Program dochodzi do "rcall start" i zamiast
wejść do start przechodzi do "rcall nic". Dlaczego nie wykonuje
podprogramu. Czy coś robię źle?
Ja tu widze dwa podprogramy, ale nie bardzo widze program ;)
To zadziala wg mnie tak:
zaladuje odpowiednia wartoscia SP
skoczy do podprogramu start (zapamietujac LP na stosie)
powroci w miejsce rcall nic (czyli nic)
powroci... do rozkazu znajdujacego sie po rcall nic, czyli do tego ldi :)
a pozniej juz sie moga dziac rozne cuda, zaleznie od tego co bedzie sie
znajdowalo na stosie, z ktorego ten ret sciagnie wartosc do powrotu
proponuje napisac jakis fragment kodu, ktory zapetli program i dopiero w tej
petli cos wykonywac:
main:
;twoj kod z wywoalenim funkcji
rjmp main ; no i to sie tutaj kreci w kolko
;twoje funkcje z powrotemi rozkazem ret
albo:
rcall start
rcall nic
main: ; to powyzej sie wykona, a nastepnie kontroler utknie w
martwej petli
rjmp main
--
> pzdr
> mIrO
>
>
tak tak wiem tylko chodzi o ten pierwszy podprogram. AVRstudio olewa
instrukcję rcall start i idzie dalej (nie wskakuje do podprogramu). Nie
wiem czemu się tak dzieje.
From: skasuj <"matti(skasuj)"_at_nospam_o2.pl>
Subject: Re: pisze prosty program w avrstudio
Date: Mon, 10 Oct 2005 21:55:01 +0200
skasuj wrote:
Napisalem cos takiego:
.include "m16def.inc"
ldi r16, high(RAMEND)
out SPH, r16
ldi r16, low(RAMEND)
out SPL, r16
rcall start
rcall nic
start:
ldi r16,5
ret
nic:
ldi r16,0
ret
No i robie build i debug. Program dochodzi do "rcall start" i zamiast
wejść do start przechodzi do "rcall nic". Dlaczego nie wykonuje
podprogramu. Czy coś robię źle?
WINA JEST NIE W PROGRAMIE. JAK SYMULUJE SIE ZA POMOCA KLAWISZA F10 TO
SYMULACJA OPUSZCZA PODPROGRAMY, A JEŻELI F11 TO WSZYSTKO DOBRZE. TO TAK
JAKBY KTOŚ JESZCZE SIĘ NACIĄŁ.
From: Jaroslaw Berezowski <jaroslaw__berezowski_at_nospam_poczta.onet.pl>
Subject: Re: pisze prosty program w avrstudio
Date: Mon, 10 Oct 2005 22:10:17 +0200
skasuj napisał(a):
WINA JEST NIE W PROGRAMIE. JAK SYMULUJE SIE ZA POMOCA KLAWISZA F10 TO
SYMULACJA OPUSZCZA PODPROGRAMY, A JEŻELI F11 TO WSZYSTKO DOBRZE. TO TAK
JAKBY KTOŚ JESZCZE SIĘ NACIĄŁ.
Trzeba doczytac roznice miedzy trace into i step over ;)
--
Jaroslaw "Jaros" Berezowski
From: Adam Dybkowski <adybkows123_at_nospam_amwaw.edu.pl>
Subject: Re: pisze prosty program w avrstudio
Date: Mon, 10 Oct 2005 22:33:20 +0200
skasuj wrote:
Napisalem cos takiego:
.include "m16def.inc"
[...]
ret
No i robie build i debug. Program dochodzi do "rcall start" i zamiast
wejść do start przechodzi do "rcall nic". Dlaczego nie wykonuje
podprogramu. Czy coś robię źle?
Pokaż listing. Może coś nietak wyszło z asemblacją? Zamieść też wynikowy
plik hex (przy tak krótkim nikt chyba się nie obrazi, że to binaria).
--
Adam Dybkowski
http://www.amwaw.edu.pl/~adybkows/
Uwaga: przed wysłaniem do mnie maila usuń "123" z adresu.