Forum: Mikrocontroller und Digitale Elektronik .CSEG - Frage


von PC-Anfaenger (Gast)


Lesenswert?

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

von Purzel H. (hacky)


Lesenswert?

Sinnvollerweise kommt DSEG zuerst, dann ESEG, und dann CSEG

von spess53 (Gast)


Lesenswert?

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

von PC-Anfaenger (Gast)


Lesenswert?

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.

von spess53 (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.