S5: Ein Bit eines Wortes = 1 ?

DerDet

Level-1
Beiträge
46
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
blöde Überschrift ;)
Ich möchte gern feststellen ob 1 Bit eines Merkerwortes vorhanden ist. Soll heißen, wenn ein einziges Bit des Wortes 1 ist, soll als Ergebnis eine 1 kommen.
Aber auch nur dann, wenn nur ein Bit gesetzt ist. Kein Bit oder mehr als 1 Bit soll als Ergebnis eine 0 liefern.
Jedes Bit alleine des Merkerwortes alleine gestzt soll also als Ergebnis eine 1 hervorrufen.
Wie kann man das am einfachsten bei einer S5-115U (943) realisieren?
Gruss
Det
 
Auf die Schnelle fällt mir hier nure der direkte Vergleich ein, z.B.:
Code:
      L MW x
      L KH 0001
      ==F
      SPB OK
      L MW x
      L KH 0002
      ==F
      SPB OK
      ...
NOK:  SPA sonstwohin

OK:    // Hurra
 
16 mal nach links / rechts schieben, das "rausgeschobene" Bit läst sich mit einem Falg abfragen. Dann Zählen und Zählwert vergleichen.

Sorry für kurze Antwort, am besten in S5 Hilfe unter "Schiebe Wort" (SWL / SWR) nachsehen.
 
16 mal rechts schieben (Loop) und mit SPZ XXX das nach rechts rausgeschobene Bit abfragen:

Siemens-Hilfe:

Code:
L MW10 
SRW 1 
SPZ ZERO //Springe zur Sprungmarke ZERO, wenn das geschobene  Bit = 0 ist.
L  MW2 //Der Programmablauf wird hier fortgesetzt, wenn der Sprung nicht ausgeführt wird.
INC 1 
T MW2 
SPA NEXT 
ZERO: L  MW4 //Der Programmablauf wird nach dem Sprung zur Sprungmarke ZERO hier fortgesetzt.
INC 1 
T MW4 
NEXT: NOP 0  //Der Programmablauf wird nach dem Sprung zur Sprungmarke NEXT hier fortgesetzt.

Der Loop fehlt noch. Rückspeichern von MW 10 nach dem Sprung nicht vergessen!

Oder Schleife (Rücksprung) bis MW10 = 0, dann MW 4 auf 1 testen.
 
Zurück
Oben