pisze prosty program w avrstudio



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
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?

Poprzedni Następny
Wiadomość
Spis treści
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



Poprzedni Następny
Wiadomość
Spis treści
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.

Poprzedni Następny
Wiadomość
Spis treści
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ĄŁ.

Poprzedni Następny
Wiadomość
Spis treści
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

Poprzedni Następny
Wiadomość
Spis treści
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.