Eine kleine Spielerei!

röhrengertl

Level-2
Beiträge
237
Reaktionspunkte
12
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute eine kleine spielerei!

Ich möchte gerne von AB 50 bis AB 113 (64 Byte) einen Wert (Wort) durchlaufen lassen (mit 0,5 Hz) in meinem Beispiel (hex. AFFE) zu Demonstrations - und Testzwecken, nun ich kann das schon machen mit:

L 45054 // Für hex.(AFFE)
T AW 50
(Zählimpuls hab ich jetzt weggelassen)
etc.

aber kann man das nicht kürzer lösen (indirekt) oder so? Eine Schleife? die das AW erhöht? Aber wie?
 
Hallo Leute eine kleine spielerei!

Ich möchte gerne von AB 50 bis AB 113 (64 Byte) einen Wert (Wort) durchlaufen lassen (mit 0,5 Hz) in meinem Beispiel (hex. AFFE) zu Demonstrations - und Testzwecken, nun ich kann das schon machen mit:

L 45054 // Für hex.(AFFE)
T AW 50
(Zählimpuls hab ich jetzt weggelassen)
etc.

aber kann man das nicht kürzer lösen (indirekt) oder so? Eine Schleife? die das AW erhöht? Aber wie?

Code:
LAR1 DW#16#82000190   //Pointer auf AW50
 
      L     W#16#AFFE
      T     W [AR1,P#0.0]

      L     31
nw1a: T     #Schleife
      L      0
      T     W [AR1,P#0.0]
      +AR1  P#2.0
      L      W#16#AFFE
      T     W [AR1,P#0.0]

      L     #Schleife
      LOOP  nw1a

wirst allerdings nichts beobachten können, weil die ganze aktion binnen 1 SPS-zyklus' stattfindet ;)
 
AW Affe

Das kann ich doch auch langsamer machen mit Taktmerker? Oder?
Mit dem DW hattet ihr schon recht, hatte vorher nur mit AF rumexperimentiert! Dann wird es Zeit für mich mal das indirekte Programmieren zu lernen! Hab ich früher nie gebraucht!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
schleifen werden immer binnen 1 SPS zyklus abgearbeitet.

wenn du es also langsamer machen möchtest, kannst du keine schleife verwenden

wenn du es langsam haben möchtest, musst du einen FC/FB schreiben, der die Flanken eines SPS-taktmerkers ausliest und bei der Flanke den wert des Pointers, den du remanent (in einem DB) speichern musst um p#2.0 erhöht (und in den DB zurück schreibt)

außerdem muss sich der FC merken, wie oft er das mit der Flanke schon gemacht hat und bei >31 durchläufen sofort beenden, da du sonst ausgänge beschreibst, die es nicht gibt
 
Zuletzt bearbeitet:
-

Beispiel:
Code:
UN Flanke_weiter // die Flanke wird mit einem Timer gebildet..je 1 s oder..
SPB M001
L Index     // dieser Integer soll irgendwo auf 50 initialisiert werden!!!
L 50
<D
SPB M001
TAK
SLD 3
T MD20

L W#16#AFFE
T AW[MD20]

L Index
L 2
+D
T Index

L Index
L 64
<D
SPB M001
L 50
T Index

M001: NOP 0

So wird in AW 50...64 je die Zahl geladen...muss man die vorherige Wörter
eigentlich löschen :confused: (also AW52 laden, AW50 auf 0, usw.)?

Gruss: V.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Vladi

Ich habe da einen Anhang angehängt, damit man das besser versteht!
Am Schluß denken die noch ich bin verrückt! Also wie Du siehst muss ich das dann wieder löschen! Das soll am Schluß dann eigentlich dazu dienen die Karte zu testen (Dauertest, zum testen ob die Werte gehalten werden, ob Sie auf 0 gehen bei Stationsausfall etc.). Also hat schon alles seinen Ernst!
Aber eben so sieht das interessanter aus!
 

Anhänge

  • screenshot.jpg
    screenshot.jpg
    41,5 KB · Aufrufe: 39
TAK das war das Schlüsselwort! Genau!

Nun habe ich nur noch das Problem, wie ich die Ausgänge erhöhe.
Also mal hier ein Mischmasch aus Basic und Step 7! Hoffentlich sieht das keiner!:ROFLMAO: Alte ZX 81 und C64-Zeiten
:sw18:
a$="0000"
b$="AFFE"
for a = 50 to 113 //Sollten die Ausgänge 50-113 sein!
for b = 1 to 1000000 //Nur zur Zeitverzögerung
next b //(sonst sieht man nix)
T AD a-1, a$ //Null setzen auf Ausgang -1
T AD a, b$ //AFFE schreiben
next a // nexter AFFE

Stimmt zwar nicht ganz aber als Beispiel! :rolleyes:
Jetzt müßte ich das nur in Step 7 umsetzen können!
Aber TAK hilft mir da schon ein wenig
 
Aw affe

Da sich hier anscheinend keiner mit AFFEn auskennt, werde ich dem Knaben jetzt selbst mit ANY-Pointer zu Leib rücken! :ROFLMAO:
Wie gesagt mit T und M kann das ja jeder! Normalerweise wäre das doch für VL eine Kleinigkeit! Oder? ;)

aber ich versuchs mal selbst das zu verkleinern!

Gruss von Röhrengertl
 
Zurück
Oben