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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank.
Aber diesen 64 Zeiler wollte ich ja eigentlich umgehen...
Vielleicht gibts da ja noch was. Ich meine mich dunkel erinnern zu können...
 
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