rcall und ähnliches funktioniert nicht

Gast #452135
Lesenswert?

tag auch

ich bin momentan dabei, mir das programmieren von AVR's anzueignen, 
benutze zu dem zweck das AVR studio, möchte einen ATMega8 programmieren 
und habe da so ein problem:

der befehl rcall wird übersprungen: wenn ich assemble und run auswähle, 
und dann mit F10 jeden schritt einzeln abspule, wandert er vom ende der 
stackpointer initialisierung einfach weiter zur routine reset.. woran 
liegt das?
nochwas: auch ältere programme, bei denen der rcall funktioniert hat, 
funktionieren nun nicht mehr.. was hab ich kaputtgemacht?

dann im anschluss gleich noch ne 2. frage: es ist ja möglich, mit 
.include weitere .asm dateien einzubinden.. nur verändert sich dabei in 
einem anderen programm irgendwie das "hauptfile" also das, welches beim 
assemble zuerst ausgeführt werden sollte.. das sollte "main.asm" sein, 
der assembler fängt aber immer mit "tools.asm" an.. was kann man da tun?

danke schonmal
derwissel

.include "m8def.inc"         ;Befehlssatz für ATMega8 laden



;Definitions

.def temp =r16
.def ram  =r17
.def ctr1 =r18
.def ctr2 =r19
.def ctr3 =r20
.def ctr4 =r21
.cseg

.equ ena=1

;Main

ldi temp, $FF
out DDRD, temp
ldi temp, $3
out DDRB, temp

ldi ram, high(RamEnd)
out SPH, ram
ldi ram, low(RamEnd)
out SPL, ram

rcall init

;LCD

reset:
ldi temp, $00
out portD,temp
ret
Gast #452145
Lesenswert?

omg das is arm.. aber naja..

hat denn noch jemand ne idee warum diese verknüfungen zwischen den 
programmen nicht klappen? habs mittlerweile nochmal aber mit den 
gleichen namen für die files getestet.. das will einfach nicht gehen.. 
ich weise ihm als initial file main.asm zu, aber egal was ich mache, er 
startet in tools.asm
Gast #452234
Lesenswert?

Hallo,

die Sprungmarke Init ist bei dir nicht vorhanden, gehe aber mal davon 
aus das du sie hier nur nicht gepostet hast. Sonnst würde es ja auch zu 
einem Compiler Fehler kommen. Wenn ich die Marke einfüge kann ich das 
Stück Programmcode im Simulator nachvollziehen, alles funzt wie zu 
erwarten.

Gruß Topsoft
Gast #452237
Lesenswert?

also: im project explorer ist als entry file die main.asm angegeben, und 
die includes stehen am anfang (ich kenns nur so?)
trotzdem wird halt die tools.asm scheinbar als entry file benutzt..

@topsoft: crazy horse hats ja schon gepostet, war falsche 
programmbenutzung XD
das geht jetzt auch alles
Gast #452277
Lesenswert?

sauber das geht danke

so jetzt tritt ein neues problem zutage:

ich benutze im main.asm einen rcall, der in dem file lcd.asm eine 
routine anspricht, die wiederum per rcall routinen aus tools aufruft.. 
die ret's von diesen routinen bringen mich aber direkt ins main.asm, was 
nicht so soll..
nochmal in code

main.asm
rcall init
anderes file
init:
rcall wait5ms
anderes file
wait5ms:
ret -> geht nach rcall init zurück

ich würde mir das so erklären, dass da der stackpointer nicht greift..
was macht man da? stackpointer in die betreffenden .asm files einbauen?

oder liegts an was anderem

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