Datum an einer adresse im EEPROM speichern

Gast #906221
Lesenswert?

Hi ich habe folgendes Problem
ich versuche was im EEPROM an  der adresse $B7f5  zu speichern aber es 
kommt zu einer Fehlermeldung
(HC11E1)  -----> Assembler


        ORG $B600       ; Start of EEPROM

ldx  $B7f0
  staa  5,x  ; put the data there  ()

ldx     $B7f0
  ldaa  5,x  ; get the data

wo konnte das problem liegen?
Gast #906232
Lesenswert?

Hi Alexander ich habe das Tutorial gelesen.aber ich kann doch meine 
Daten im internen (On CHIP EEPROM ) speichern oder
ich hätte gerne das im Assembler
ich denke mein Code ist richtig aber wo der Fehler liegt weiss ich nicht
#906246
Lesenswert?

Stephanie wrote:
> Hi  Johannes das weiss ich dass der HC11 kein HC11 ist
> hast du einen Vorschlag?
Doch, der HC11 ist ein HC11. Und der Kommentar bezog sich auf Alexanders 
Posting. Und nein, ich kann Dir nicht weiterhelfen, da ich mich mit HC11 
nicht auskenne. Ich bin nur in diesem Thread gelandet, weil Du 
offensichtlich die Forenregeln nicht gelesen hast und den Controllertyp 
nicht im Betreff angegeben hast...
#906335
Lesenswert?

Stephanie wrote:
> ich versuche was im EEPROM an  der adresse $B7f5  zu speichern aber es
> kommt zu einer Fehlermeldung

Ich kenne den HC11 im speziellen nicht, aber in der Regel hat eine 
Fehlermeldung auch immer einen Wortlaut und der sagt ziemlich genau aus, 
wo den Assembler der Schuh drückt.

Wenn Dein Problem der englische Wortlaut ist, dann einfach copy&paste, 
wird schon jemand übersetzen können.


>         ORG $B600       ; Start of EEPROM
>
> ldx  $B7f0

Könnte mir gut vorstellen, daß der EEPROM nur für Daten ist, d.h. da 
darf kein Code stehen. Selbst modifizierender Code ist ja auch etwas 
strange.


Peter
Gast #906488
Lesenswert?

Hallo,

der HC11 kann da alles speichern, weil er eine von Nemann Architektur 
hat. Wie allerdings generell läßt sich EEPROM nicht so einfach mittels 
STA beschreiben.

Im Datenblatt steht der EEPROM Schreibzyklus wie folgt beschrieben :

PROG LDAB #$02 EELAT = 1
     STAB $103B Set EELAT bit
     STAA $XXXX Store data to EEPROM address
     (  for valid EEPROM address see memory map for each device)
     LDAB #$03 EELAT = 1, EPGM = 1
     STAB $103B Turn on programming voltage
     JSR DLY10 Delay 10 ms
     CLR $103B Turn off high voltage and set to READ mode

Was der Assembler da für eine Fehler rauswirft weiß aber immer noch 
niemand.

Eckhard
#906802
Lesenswert?

Sorry, habs überlesen, dachte es ist ein AVR.

Nun dein Code ist trotzdem falsch. Wenn du ein .org $B600 benutzt, 
bedeutet dies, dass folgende Assemblerbefehle an die Adresse $B600 
geschrieben werden. Dein Programmcode muss aber immer im 
Programmspeicher stehen. Von dort kannst an einen Wert an eine Adresse 
speichern.
Also meinetwegen:

.org $100   (Programmspeicher)
load Adresswert nach Adressregister A0
schreibe Wert an Adresse die in A0 steht

(Kenn jetzt nicht die Befehle beim HC11)

Willst du feste Werte wie Konstanten beim Programmieren an einer 
bestimmten Stelle ablegen (meinetwegen die Zahlen 5,4,13 sollen an 
Adresse $B600 stehen, dann muss es wie folgt heißen:

.org $xxxx
"Hauptprogramm im Programmspeicher"

.org $B600 (EEPROM)
.db 5,4,13


So ist das nun bei ASM üblich.
Gast #906826
Lesenswert?

Hallo,

nochmal ein HC11 unterscheidet nicht zwischen Daten und 
Programmspeicher.
Der hat nur RAM und EEPROM. Das Programm kann natürlich auch im RAM 
laufen aber ist dann nach dem Einschalten weg. Deshalb legt man das 
Programm halt in den EEPROM Bereich.


Eckhard
Gast #907898
Lesenswert?

Hi  Alex

Ich weisst jetzt was du meinst.

     ORG  $B600

     Data1 RMB 1

Daten

     FDB  5,4,13            ; DB.W  oder DB.B würde auch gehen

     LDX  #Daten
     LDAA 0,X               ; ACCA wird mit 5 initialisiert
     STAA <Data1

ich glaube so ist das Programm richtig

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