-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Overlay in ein Array legen

  1. #1

    Overlay in ein Array legen

    Anzeige

    Hallo,

    ich habe eine Word-Variable und habe für diese zwei Bytevariablen per Overlay definiert um auf das High- und Lowbyte zugreifen zu können:

    Dim TEST As Word At &H0100
    Dim TEST_1 As Byte At &H0100 Overlay
    Dim TEST_2 As Byte At &H0101 Overlay

    Nun habe ich auch ein Array:
    Dim Testarray(20) As Byte

    Meine Frage ist nun, kann ich die beiden Overlays auf zwei Variablen des Array legen? Am liebsten wäre es mir, wenn ich Bascom direkt in der Overlayzeile sagen könnte, dass die beiden Bytes von TEST zwei Variablen im Testarray sein sollen. Ist sowas möglich?

    Danke,

    Thomas

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    So elegant geht das nicht, denk ich. du könntest aber zwei verscheidene arrays übereinanderlegen

    Dim Bytearray(20) as byte
    Dim Wordarray(10) as word at Bytearray overlay

    das braucht keinen extraplatz und sollte auch reichen.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Gast
    Ich habe nun mal diesen Code verwendet:
    Dim Wordarray(10) As Word At Konfigregister Overlay
    Error Alias Wordarray(0)

    Und bekomme bei folgennden Zeilen die Meldung
    "array index out of range"...was passt Bascom denn nicht?!?!

    Error = 0
    Error.0 = 1

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.02.2005
    Ort
    Salzburg
    Alter
    37
    Beiträge
    464
    Vielleicht der Speicherbereich??

    Welchen Controller verwendest du?
    Die Adressen für RAM etc. unterscheiden sich untereinander.
    Besser wäre die Angabe des Speicherbereiches in HEX.


    MFG

    Vader

  5. #5
    Gast
    Ich verwende einen ATMega162...der Speicherbereich sollte doch aber automatisch richtig vergeben werden wenn ich nichts angebe, oder?

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.02.2005
    Ort
    Salzburg
    Alter
    37
    Beiträge
    464
    Ohne Angabe eigentlich schon.

    Die Fehlermeldung erinnert mich an mein HTL Projekt.
    Bei der Angabe der Speicheradresse habe ich den Falschen gewählt, und bekam genau diese Fehlermeldung.
    Probiers einfach mit direkter Adressierung.

    Wieso hast du "Error Alias Wordarray(0)" mit 0 deklariert????
    Das ergibt keinen Sinn.

    MFg

    Vader

  7. #7
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Wie auch immer, Index 0 is nix für Bacom, der fängt mit 1 an.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  8. #8
    Gast
    Wie? Der Bascom fängt bei Arrays mit 1 an? Jede andere Programmiersprache fängt bei Arrays doch mit 0 an.
    Wenn man ein Array mit 10 Einträgen hat, so laufen die normalerweise doch von 0 bis 9.

  9. #9
    Gast
    Hmm, scheint bei Bascom wohl echt anders zu sein...aus der hilfe:

    'create an array named a, with 10 elements (1 to 10)
    Dim A(10) As Byte
    'create an integer
    Dim C As Integer
    'now fill the array
    For C = 1 To 10
    'assign array element
    A(c) = C
    ' print it
    Print A(c)
    Next

  10. #10
    Gast
    Ich habe nun mal folgendes versucht:

    Dim Konfigregister(20) As Byte

    Dim Error As Word At Konfigregister Overlay
    Dim Error1 As Byte At Konfigregister Overlay 'Lowbyte
    Dim Error2 As Byte At Konfigregister + 1 Overlay 'Highbyte

    So müsste es ja gehen, dass ich ein Array habe und die Werte im Array einmal als Word und das Low- und Highbyte jedes Words auch als Byte ansprechen kann. Nun nur noch eine Frage dazu...stimmt die Reihenfolge mit Low- und Highbyte so wie gepostet? Oder müsste das rumgedreht werden?

    Danke,

    Thomas

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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