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
erstmal gar nichts, F10 bewirkt ein step over, d.h. alles, was sich dahinter verbirgt, wird nicht step für step simuliert. F11 macht echte Einzelschritte.
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
Du musst im Project Explorer die gewünschte Datei als Hauptdatei festlegen, da gibts ein Menu (Rechte Maustaste?) "Set assembler entry file" oder so. MFG Falk
Stehen die .include-Anweisungen am Anfang oder am Ende von der Hauptdatei?
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
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
Hi! .include-Anweisungen werden da ausgeführt wo sie stehen. Definitionen sollten schon am Anfang stehen, andere Programme an genau der Stelle wo sie eingefügt werden sollen. Viel Erfolg, Uwe
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.