Hi, ich versuche jetzt schon ne Ewigkeit mit einem Mega8 eine Tabelle aus dem dseg auszulesen. Der Teil des Programms sieht in etwa so aus: ... ldi xl,low(tabelle) ldi xh,high(tabelle) ... main: ld r1,x+ out portb,r1 rjmp main ... ... .dseg tabelle: .db 0,1,2,3,4,5,6,7 ... Wenn ich in der main auslese wird das r1 nur mit FFh gefüllt. In der Memory-Anzeige von AVRStudio werden die entsprechenden Bereiche ab $60 in der die Tabelle ja stehen sollte eben nur mit FFh angezeigt. Ich habe im gleichen Programm im .cseg eine Tabelle welche ich mit dem z-Pointer per lpm auslese - das klappt ohne Probleme.. Was ist im dseg anders?? Bin für jeden Tipp dankbar!! Grüße, Nick01
beim Z-Register und lpm muß man doch erst noch ein Bit links schieben wegen der 16Bit-Adressierung, das fehlt hier offensichtlich, ist das der Fehler?
Die Sache mit dem z-Pointer klappt ja wie gesagt. Probleme habe ich mit dem x und y-Pointer, da die ja auf Teile im dseg zugreifen.
Nur weil du im Quellcode .dseg machst, heißt das nicht, dass die nacher im RAM stehen. Du musst am Anfang vom Programm die Daten da auch hinladen!
d.h. ich muss die ganzen einträge einzeln über die store-befehle in den dseg laden??
Oder du schreibst sie mit .db ins Flash (cseg) und liest sie mit LPM über den Z-Pointer aus. Für Tabellen mit zur Entwurfszeit bekannten Konstanten würde ich sowiso kein SRAM verschwenden (cseg=Flash, dseg=SRAM, eseg=EEPROM). ...
Hallo Leute, also diese Foren sind schon Klasse ich habe gerade genau das Problem von nick01. Ich habe auch gerade verstanden das was ich da vor hatte gar nicht gehen kann >> Daten/Konstanten im SRAM zu "programmieren". Aber im Moment habe ich nun den Hänger - wozu kann ich den dann bitte die .dseg-Anweisung des Assemblers nehmen... nur um Speicherzellen zu reservieren bzw. symbolisch zu addressieren? Hilft mir da mal jemand aus dem Loch raus? Vielen Dank, Gary
> wozu kann ich den dann > bitte die .dseg-Anweisung des Assemblers nehmen... nur um > Speicherzellen zu reservieren bzw. symbolisch zu addressieren? So ist es... ...
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.