[STL/AWL] Nicht alle Bits werden zurueckgesetzt

soldagem

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Sps-Forum,
ich wage gerade meine ersten Schritte mit STL, da kam doch gleich die erste Frage auf. Also ich habe folgenden Code um die Variablen M300.0 bis M300.3 zurueckzusetzen. Spaeter moechte ich die 4 durch eine Variable ersetzen, deshalb meine ich eine Schleife wie programmiert zu brauchen.

Bloederweise werden immer die Variablen M300.1 bis M300.3 zurueck gesetzt, nicht aber M300.0. Woran liegt das? Ich kann das meinem eigenen Code nicht entnehmen.

Vielen Dank schonmal.
Soldagem

Code:
      A     "mStep01"
      R     "mPleaseRemovePart"
      JCN   jp02
 
      L     0
      T     "tempCounter"
jp01: NOP   0
      L     300                         // Base address of WeldOK Signals
      SLD   3                           // Bit->Byte conversion
      LAR1                              // Load in address register
      L     "tempCounter"               // Load counter again
      +AR1                              // Add counter to adress register
      R     M [AR1,P#0.0]
      L     "tempCounter"
      +     1
      T     "tempCounter"               // Increase Counter by 1
      L     4
      L     "tempCounter"               // When counter is less than
      >I                                // Number of welds, do this
      JC    jp01                        // resetting process again
jp2: NOP   0
 
Hi,

Code:
      L     300                         // Base address of WeldOK Signals
      SLD   3                           // Bit->Byte conversion
      LAR1                              // Load in address register

      L     4
jp01: T     "tempCounter"               // Load counter again
      SET   
      R     M [AR1,P#0.0]
      L     P#0.1
      +AR1  
      L     "tempCounter"
      LOOP  jp01
;)

Gruss Daniel
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
im prog von soldagem fehlt der befehl SET vor dem rücksetzen des merker.
daher wird das rücksetzen vom zufälligen, vorherigen vke abhängig.

beim beispiel von dalbi ist es dann korrekt definiert.
 
im prog von soldagem fehlt der befehl SET vor dem rücksetzen des merker.
daher wird das rücksetzen vom zufälligen, vorherigen vke abhängig.

beim beispiel von dalbi ist es dann korrekt definiert.

und mein Beispiel ist auch viel schlanker. LOOP + F1 ;)

Gruss Daniel
 
Vielen Dank fuer die schnelle Antwort. Die kam ja schneller als ich sie lesen konnte.

Statt
Code:
L     P#0.1
kann man wahrscheinlich auch
Code:
L     1
schreiben denke ich mal.

Ich hoffe, dass ich bald auch Fragen anderer beantworten kann, nicht dass das hier eine einseitige Angelegenheit wird.

Gruesse
Soldagem
 
Nein, das kannst du nicht, da das eine ein Pointer ist und das andere eine Int Zahl
Die Funktion ist mit 1 aber auch gegenen, da der Pointer in dem Fall ein Literal ist und dementsprechend auch nur in den Akku geladen wird. Die Adressregister bleiben dabei unangetastet.
P#1.0 ergibt den Wert 8, also das übliche SLD 3 wenn man auf die Byteadresse zugreifen will.
 
Die Funktion ist mit 1 aber auch gegenen, da der Pointer in dem Fall ein Literal ist und dementsprechend auch nur in den Akku geladen wird. Die Adressregister bleiben dabei unangetastet.
P#1.0 ergibt den Wert 8, also das übliche SLD 3 wenn man auf die Byteadresse zugreifen will.

Stimmt habe ich überlesen.


bike
 
Zurück
Oben