- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 5 von 5

Thema: Denkblockade -> Restore data(variable)

  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von Andree-HB
    Registriert seit
    10.12.2004
    Ort
    Bremen
    Alter
    53
    Beiträge
    2.803

    Denkblockade -> Restore data(variable)

    Anzeige

    Powerstation Test
    Irgendwie hakt`s gerade an was ganz banalen bei mir - kann ich nicht einfach sinnbildliche Zeilen benutzen, um per variable mehrere tabellen anzusprechen ?`


    Code:
    dim x as byte , y as byte
    x=5
    
    do
       restore dta(x)
       Read y
       print y
    loop
    end
    
    
    Dta5:                                          
    Data 0 , 62 , 81 , 73 , 69 , 62 , 0 , 0
    
    Dta6:                                          
    Data 0 , 62 , 81 , 55 , 23 , 62 , 0 , 0

    - sagt mir dann immer nur "label not found" -

    ..."restore dta5" funktioniert einwandfrei....aus der Bascom-Hilfe werde ich diesbezüglich gerade nicht schlau...hat Jemand ein Tipp für mich ?

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    31
    Beiträge
    1.578
    Hallo Andree-HB,

    wenn ich das richtig verstehe möchtest du eine Data-Zeile auslesen, X bestimmt dabei, welchen Datensatz (dta5 oder dt6) du auslesen möchtest?!
    wenn es nur zwei Datensätze gibt, kannst du das ja mit einer If-Abfrage lösen:

    Code:
    if x = 5 then
    restore dta5
    read y
    print y
    elseif x = 6 then
    restore dta6
    read y
    print y
    endif
    Allerdings ergibt sich hier ein problem:
    Y braucht auch noch einen vordefinierten Wert, ansonsten kennt sich der µC nicht aus! (oder hab ich da was nicht verstanden??)
    Vielleicht könntest du mal deinen gesamten code posten und erklären, was du damit machen willst?! das wäre viel einfacher für uns alle... soweit ich weiß hat keiner hier im forum ne glaskugel

    Gruß
    Chris

  3. #3
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    "x" kriegt ja erst zur Laufzeit einen Wert, für "RESTORE" (oder auch JUMP oder CALL) muss aber schon der Compiler den konkreten Label-Namen wissen.
    Bei MACRO-Statements könnten das einige Compiler in deinem Sinne, aber Bascom gehört da nicht dazu.

    Je nachdem, was du machen möchtest :
    EDIT: Du müsstest eine Tabelle von deinen Labeln machen und in der kannst du mit Lookup() dann so wie in deinem LOOP arbeiten

    Code:
    $regfile = "m32def.dat"
    $crystal = 16000000
    $baud = 9600
    
    Dim Tabaddr As Word
    Dim X As Byte
    
    Dim Xxx As Byte
    
    For X = 0 To 4
        Tabaddr = Lookup(x , Lookup_tab)
        Xxx = Cpeek(tabaddr)
        Print Xxx
    Next
    
     End
    
    Lookup_tab:
        Adr2 Dta1
        Adr2 Dta2
        Adr2 Dta3
        Adr2 Dta4
        Adr2 Dta5
    
    Dta1:
        Data 1
    Dta2:
        Data 2
    Dta3:
        Data 3
    Dta4:
        Data 4
    Dta5:
        Data 5
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Andree-HB
    Registriert seit
    10.12.2004
    Ort
    Bremen
    Alter
    53
    Beiträge
    2.803
    ...danke Robert, soetwas Ähnliches habe ich mir schon gedacht...ich werde Deinem Tipp mal folgen und so weitermachen.

    thx

  5. #5
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Noch'n Tip: "RESTORE" lädt ja nur register 8, 9 mit der (flash) adresse des Label.
    Du bist ja eh ein abgefeimter progger, d.h. mit ein wenig inline-assembler kannst du das nachvollziehen.
    Vorteil: danach gehen die ganz normalen "READ"-Befehle und man braucht nicht mehr solche Schweinereinen wie "CPEEK"
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad