Im AVR-Tutorial unter EEPROM fangen die Beispielprogramme alle so an wie am Ende dieser Message: Meine Frage - muss man unbedingt .CSEG in das Programm schreiben und wenn man später noch "Variablen" für .ESEG definiert? Beispielprogramm /*********************************/ include "m8def.inc" .def temp = r16 .def temp1 = r17 .equ CLOCK = 4000000 ; Frequenz des Quarzes .equ BAUD = 9600 ; Baudrate .equ UBRRVAL = CLOCK/(BAUD*16)-1 ; Baudratenteiler ; hier geht das Programmsegment los .CSEG .org 0 ldi r16, low(RAMEND) ; Stackpointer initialisieren out SPL, r16 ldi r16, high(RAMEND) out SPH, r16
Hi >Sinnvollerweise kommt DSEG zuerst, dann ESEG, und dann CSEG Ist eigentlich egal. Aber so etwas >.def temp = r16 >ldi r16, low(RAMEND) sollte man sich gar nicht erst angewöhnen. Entweder symbolische Namen oder Registernamen. Das Vermischen ist eine absolut sichere Fehlerquelle. MfG Spess
spess53 schrieb: > sollte man sich gar nicht erst angewöhnen. Entweder symbolische Namen > oder Registernamen. Das Vermischen ist eine absolut sichere > Fehlerquelle. Das Beispiel stammt ja aus dem Tutorial. Mich hatte es zunächst verwirrt, warum man .cseg geschrieben hatte und später .eseg und bei anderen Beispielen hatte man das .cseg nicht geschrieben, also hab ich vielleicht gedacht, dass der Assembler es automatisch in .cseg schreibt den Programmablauf.
Hi Der Assembler benutzt, wenn es kein .cseg-, .dseg- oder .eseg-Direktive gibt, den ersten Assemblerbefehl als Programmstart. Von der Seite her also entbehrlich aber .cseg oder/und .org $0000 am Programmstart sind auch kein Fehler. Wenn aber .dseg oder .eseg vor dem Programmstart benutzt wird, ist .cseg absolut notwendig. Gibt beim Fehlen auch eine Fehlermeldung. MfG Spess
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.