Adressierung korrekt!?

the

Level-1
Beiträge
20
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo,

eine kleine Anfängerfrage zum schnellen Beantworten obs klappt oder nicht.

Ich möchte Sinngemäß folgende Anweisung in AWL programmieren.
Code:
U    #Sz[Si]
UN  #Hz[Si]
SPBN   IF2
mir ist bewußt, dass dieser Code so nicht funktioniert.

Klappt das so??:
Code:
VAR
  Hz:ARRAY [0..255] OF BOOL;
  Hz:ARRAY [0..255] OF BOOL;
  Si:INT;
END_VAR;

L   P##Si
SLD   3
LAR1

U   #Sz[AR1,P#0.0]
UN  #HZ[AR1,P#0.0]    //oder steht der Pointe Si jetzt im AR1 nicht mehr zur Verfügung??
SPBN  IF2

Gruß
Thomas
 
Hallo,
das funktioniert so nicht.
Eventuell würde es so gehen :
Code:
L   P##Si
LAR1
U   #L [AR1,P#0.0]
= #Temp_Bool_1
 
L   P##Hz
LAR1
U   #L [AR1,P#0.0]
= #Temp_Bool_2
 
U #Temp_Bool_1
UN #Temp_Bool_2
SPBN ...
Gruß
LL
 
Hallo,
das funktioniert so nicht.

oO ... wenn man davon ausgeht, dass es zwei unterschiedlich indexe sind, hast du recht, aber er geht vom selben aus ... oder?

L #Si ... wenn du den wert haben willst
L P##Si ... wenn du die adresse haben willst

und für demnächst: stell deine fragen so, dass man sie versteht ^^
 
DANKE!

richtig, gleicher Index (Si) für beide Arrays (Sz und Hz).

wegen der Verständlichkeit: ich werd mir Mühe geben ;)
 
Hallo,
das funktioniert so nicht.
Eventuell würde es so gehen :
Code:
L   P##Si
LAR1
U   #L [AR1,P#0.0]
= #Temp_Bool_1
 
L   P##Hz
LAR1
U   #L [AR1,P#0.0]
= #Temp_Bool_2
 
U #Temp_Bool_1
UN #Temp_Bool_2
SPBN ...
Gruß
LL

Öhm, Larry echt???

Vielleicht eher so:

Code:
L P##Sz
L #Si
+D
LAR1
U #L [AR1, P#0.0]
= #Temp_Bool_1

L P##Hz
L #Si
+D
LAR1
U #L [AR1, P#0.0]
= #Temp_Bool_2

U #Temp_Bool_1
UN #Temp_Bool_2
SPBN ...

Si gibt ja den Index an, den sollte man bei Bool direkt, ohne SLD 3 addieren, denke ich.
Mal so aus dem Kopf :D!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
OK Ralle, wenn du es so haben willst ... ;)
Code:
L #Si
[B][COLOR=red]SLD 3  //der war nämlich da ...  und  Blödsinn[/COLOR][/B]
L P##Sz
+D
LAR1
U #L [AR1, P#0.0]
= #Temp_Bool_1
Gruß
LL

Nachsatz:
... aber du hast schon Recht - man sollte präzise sein mit seinen Vorschlägen ...
 
Zuletzt bearbeitet:
OK Ralle, wenn du es so haben willst ... ;)
Code:
L #Si
[B][COLOR=red]SLD 3  //der war nämlich schon korrekt ...[/COLOR][/B]
L P##Sz
+D
LAR1
U #L [AR1, P#0.0]
= #Temp_Bool_1
Gruß
LL

Nö, ich bin gegen SLD 3, wenn man auf ein Array of Bool adressiert?
Hab ich da einen Fehler in der Denke?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Bitadresse hat ja sinnigerweise gerade mal 3 Bit (0-7)
Denke mal immer schön die Bits bis 7 hochzählen, und wenn man bei 7 angekommen ist, Bitadresse wieder auf 0 und Byteadresse 1 hochzählen:confused:
 
@Grubba:
nicht nötig ... wenn im #si z.B. 22 drin steht dann würde so das 22. Bit ab Start adressiert - geht sogar über die DWORD-Grenze (32 Bit) hinweg ...

Gruß
LL
 
Die Bitadresse hat ja sinnigerweise gerade mal 3 Bit (0-7)
Denke mal immer schön die Bits bis 7 hochzählen, und wenn man bei 7 angekommen ist, Bitadresse wieder auf 0 und Byteadresse 1 hochzählen:confused:

Genau das passiert, wenn man SLD 3 wegläßt. dann gibt eine 15 an, daß Bit 15 ab der Adresse in AR1 abgefragt wird.

Edit: Der Larry is wieder mal fix :)
 
@Larry

Kannste mal sehen...

Ist mir auch gerade aufgefallen das mein gewünschter Bitwert, den ich in Integer eingebe, genau passt. (ohne sld)

22 = 10110
= 10 - 110
= Byte 2, Bit 6

-> so solls sein !
 
Zurück
Oben