Step 7 Werte in einem Array nach hinten schieben

danix46

Level-1
Beiträge
25
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute ich bins leider schon wieder.
Hab auch das meiste hinbekommen nur wie der Titel schon sagt finde ich nicht heraus wie ich in einem Integer Array[0-9] meine Werte nach hinten rausschieb.
Der Hintergrundgedanke ist eine Fehlerhistorie die 10 Werte speichert. Wenn das Array voll ist soll der 0te Werte ein neuer sein und der 9 rausgeschoben werden. Falls jemand einen Denkanstoß hätte wäre das Klasse (bin noch ein blutiger Anfänger in AWL).

Code:
A     #E_WertSpeichern
      FP    #S_Flanke

      A     #S_Flanke
      JCN   NOADD

      L     "Clock_Byte"
      T     "Historie".Historie[#S_Index]

      L     #S_Index
      L     1
      +I
      T     #S_Index

NOADD: NOP 0

      L     #S_Index
      L     10
      ==I
      S     #S_ArrayEnd

      AN    #S_ArrayEnd
      JC    ARRAYEND
      L     0
      T     #S_Index

ARRAYEND : NOP 0
 
Hier Pointer Zeiger FIFO LIFO ist ein recht guter Beitrag zu indirekter Adressierung.
Hier noch eine recht einfache Lösung von 4L ohne Schleife und ohne indirekter Adressierung: #5
Suche mal im Forum nach "FIFO" und vielleicht auch nach "indirekte Adressierung". Generell läßt sich das Problem mit Array in SCL viel einfacher lösen, da man dort mit einem Index im Array arbeiten kann.
 
Code:
quick 'n' dirty:
L DW 16
T DW 18
L DW 14
T DW 16
L DW 12
T DW 14
L DW 10
T DW 12
L DW 8
T DW 10
L DW 6
T DW 8
L DW 4
T DW 6
L DW 2
T DW 4
L DW 0
T DW 2
L neuerINT-Wert
T DW 0

even quicker and dirtier:
L DW 16
T DW 18
L DD 12
T DD 14
L DD 8
T DD 10
L DD 4
T DD 6
L DD 0
T DD 2
L neuerINT-Wert
T DW 0
vorausgesetzt a[0] entspricht DW0, a[1] entspricht DW2 u.s.w.
Bei den paar (oder noch weniger) ArrayElementen lohnt sich die Eleganz einer Schleife in AWL nicht unbedingt - alles Geschmackssache.
 
Zurück
Oben