stuck initialisieren

Gast #1757958
Lesenswert?

Hallo,
Ich bin noch ein blutiger Anfänger aber vieleicht hat ja jemand lust mir 
zu helfen.
Folgendes Problem:
Ich habe ein leines Programm in avr studio 4 geschrieben das einfach nur 
Ports einschalten und ausschalten soll.
Aber wenn ich den befehl RCALL benutzen will dann springt er entweder 
nicht um, oder bleibt auf dem Befehl sitzen.
Meine Frage:
Wie initialisiere ich den stack richtig, oder is das überhaupt das 
Problem?

Hier der code:
1
.include "m32def.inc"
2

3
ldi r16,255
4
out ddra,r16
5
 
6
ldi r16, LOW(RAMEND)  
7
out SPL, r16
8
ldi r16, HIGH(RAMEND) 
9
out SPH, r16
10

11
rjmp mainloop
12

13
wait:
14
ldi r16,8
15

16
wt:
17
ldi r17,170
18

19
wt2:
20
ldi r18,120
21

22
wt3:
23
dec r18
24
brne wt3
25
dec r17
26
brne wt2
27
dec r16
28
brne wt
29
ret
30

31
mainloop:
32

33
ldi r16,0
34
out porta,r16
35
rcall wait
36

37
ldi r16,1
38
out porta,r16
39
rcall wait
40

41
ldi r16,2
42
out porta,r16
43
rcall wait
44
rjmp mainloop
#1757983
Lesenswert?

cypher schrieb:

> Aber wenn ich den befehl RCALL benutzen will dann springt er entweder
> nicht um, oder bleibt auf dem Befehl sitzen.

Ich nehme an, du sprichst vom Simulator?

Ist dir bewusst, dass es dort 2 Möglichkeiten gibt, in Einzelschritten 
durch dein Programm zu gehen?
Einmal F10 und einmal F11

Der Unterschied:
Bei F10 werden rcall nicht weiter in Einzelschritten verfolgt sondern 
der Simulator taucht in das Unterprogramm weg und meldet sich erst 
wieder, wenn das Unterprogramm den ret durchführt.

F11 hingegen macht den Einzelschritt in das Unterprogramm hinein.
Gast #1758807
Lesenswert?

Danke schön :)
Der simulator war gemeint.
Danke für eure Hilfe und die schnellen Posts :)
nun funktoniert alles! Ich hatte das Programm erst garnicht übertragen 
um es auszuprobieren! Es lag nur daran das ich F10 und nicht F11 benuttz 
habe.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren