Pointer und Schleifenzähler

Nordkurve

Level-1
Beiträge
86
Reaktionspunkte
6
Zuviel Werbung?
-> Hier kostenlos registrieren
hey leute,

mal ne bescheidene frage, habe in den anhang mal meine programmierung mti einem pointer und schleifenzähler gepackt.

jetzt die frage dazu, wieso wird das adressregister (ar1) nicht erhöht, was ist daran falsch? also der schleifenzähler funktioniert. nur schreibt er mir die Daten immer auf das selbe ziel im datenbaustein. er erhöht das doppelwort im db nicht. sieht einer einen fehler in der programmierung oder kann mir einen andern tip geben?

danke

bis denne
 

Anhänge

  • Unbenannt.JPG
    Unbenannt.JPG
    107,2 KB · Aufrufe: 56
Du hast am Ende vergessen wieder nach "HOCH" zu springen ...
Sprich : hinter der letzten Anweisung T MW 30 mußt du den Befehl einfügen SPA Hoch
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Funktioniert aber trotzdem nicht.

nochmal die genau beschreibung, was ich vorher, vielleicht hat jemand sonst ne idee:

ich möchte bei jedem aufruf des ob35 (alle 6ms) einen wert (real) aus einem db in einen anderen db fortlaufend speichern. dies soll 400 mal geschehen.

bis denne
 
Mein Vorschlag wäre, benutze die Information, die im MW30 steht um das AR1 mit Informationen zu versorgen.

Wenn ich das richtig sehe, wird bei dir nur anfangs festgelgt, was im AR1 steht. Schon beim zweiten Schleifendurchlauf ist unsicher, was im AR1 steht.

Code:
     L MW     30                           //Abbruchkriterium prüfen
     L 400 
     >I
     SPB END
     L MW      30                          //4byte
     L 4
     *I
     T MW     30
     L MW     30                           //Pointer erzeugen
     SLD 3
     LAR1
     L DB11.DBD10                          //Quelle
     AUF DB   5
     T DBD[AR1,P#0.0]                      //Information schreiben
     L MW     30                           //Laufvariable inkrementieren
     L 1
     +I
     T MW     30
End: NOP 0
 
Zuletzt bearbeitet:
Hallo,
ich hatte deine Schleifen-Routine nicht in Verbindung mit der Werte-Aufzeichnung gebracht ... jetzt ist der Groschen gefallen ...

Das AR1-Register hat beim neuen Aufruf des OB35 NICHT mehr den Wert, den es beim letzten Durchlauf beim Verlassen hatte. Du mußt den Pointer also auch noch irgendwo zwischenspeichern und beim neuen Aufruf wieder laden . Vergiß also meinen letzten Beitrag. Der war in diesem Zusammenhang Quatsch.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
könnte man denn den pointer dann an den schleifenzähler koppeln?

l mw30 //schleifenzähler
l p#4.0
*D
LAR1


würde soetwas funtionieren? bin mir total unsicher bei der multiplikation!
 
Nicht so, aber :

L MW30
ITD
L 4
*D
SLD 3
T dw_Pointer

AUF DB 100
L Wert_Real
T DBD [dw_Pointer]

hierbei ist dw_Pointer ein DWORD und Wert_Real dein Anlaogwert ...
 
Zurück
Oben