- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 7 von 7

Thema: 255 Byte Assemblerprogramm zu lang?

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    06.01.2004
    Ort
    München
    Alter
    74
    Beiträge
    214

    255 Byte Assemblerprogramm zu lang?

    Anzeige

    Powerstation Test
    Mein Assembler-Programm ist genau 255 Bytes lang, belegt also die Adressen $H0101 bis $H01FF (inklusive), und ich übersetze es mit AS80.

    Wenn ich in CBASIC die S19-Datei anhänge, kriege ich beim Compilieren die Fehlermeldung "Assemblerprogramm zu lang".
    Wenn ich willkürlich das Prog um 1 Byte verkürze, kommt die Fehlermeldung nicht mehr (ist aber eigentlich nicht die Lösung: ich lege schon einen gewissen Wert auf das letzte Byte, hatte mich ja extra dazu aufgerafft).

    Frage: Dürfen Assembler-Programm nur max 254 Bytes lang sein?

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    06.01.2004
    Ort
    München
    Alter
    74
    Beiträge
    214
    andyoo1 schreibt hier auch, dass er nur 254 Byte laden kann, nicht 255.

    Helft uns doch bitte:
    Dürfen Assembler-Programm nur max 254 Bytes lang sein?

    (Ich schmeiss die CC1 wegen einem Byte weniger nicht weg, aber vielleicht mach ich bloss was falsch...)

    Danke!

  3. #3
    andyoo1
    Gast

  4. #4
    Gast
    ok also 253 bytes .. aber warum, das interne eeprom is ja 256 byte groß und ein byte wird für das option register verwendet!

    außerdem, wozu sind der non-protected und protected bereich, das assembler-programm liegt ja in beiden drin.

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    06.01.2004
    Ort
    München
    Alter
    74
    Beiträge
    214
    Ich finde den Verweis sehr gut,
    aber das mit den 253 Bytes stimmt meines Erachtens nicht.

    Zumindest ist mein Programm "nach Abspecken um ein fast überflüssigen Byte" genau 254 Bytes lang. Es lässt sich laden, läuft (zumindest bisher),
    und ich hab nirgend wo einen Hinweis finden können, dass am Ende der 256 EEPROM Bytes eins oder gar zweie für irgend jemanden reserviert seien.

    Conrad schreibt in der Doku von 256 freien Bytes; ich denke, das stimmt auch nicht, wegen dem OPTR. Obwohl das OPTR eigentlich bei power-on und reset gelatcht wird. -- Für Programme geht's damit jedenfalls nicht.

    Den Sinn des OPTR verstehe ich so:
    man kann damit verhindern, dass Teile des EEPROM (versehentlich) überschrieben / geladen werden. Dazu muss man dieses Byte entsprechend setzen, und ab dem nächsten power-on/reset gilt der so eingestellte Schutz.
    Könnte man mal ausprobieren, ist aber während der Programm-Entwicklung wohl eher hinderlich...

    Also: Ungeklärt (für mich)

  6. #6
    Gast
    nochmal zurück zu dem protected bereichen, wozu sind die?
    und was passiert bei nem latch genau?

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    06.01.2004
    Ort
    München
    Alter
    74
    Beiträge
    214
    Protected:
    Man kann verhindern, dass der Bereich von $0120 bis $01ff verändert wird. Dazu muss das "EEPROM ProtectionBit" Bit im OPTR auf 0 gesetzt sein.

    Latch:
    Bei Power-On oder Reset liest der MC den (gerade aktuellen) Wert des OPTR und hält ihn in ein Hilfsregister fest ("Latch"). Ab jetzt gilt nur noch der Inhalt dieses Latch: wenn das OPTR jezt geändert wird, wirkt sich das erst nach dem nächsten Power-On / Reset aus.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests