mit any pointer ein bit schreiben

Zuviel Werbung?
-> Hier kostenlos registrieren
Limette hat doch eigentlich schon alles, um das entsprechende Bit zu schreiben,
ohne den SFC 20 zu benötigen:
Code:
AUF DB [#DB_Nummer]

L #Byte_Nummer
SLD 3
L #Bit_Nummer
+D
LAR1

U Bedingung
= DBX [AR1,P#0.0]

flexibler geht's doch kaum. Und kürzer ist es auch noch.

Grüße
Gebs

hab deine antwort erst gerade gesehen. werde deins gleich probieren. hab mich heute morgen mal in scl probiert:

Code:
FUNCTION FC1 : VOID
VAR_INPUT


BitNummer: INT;
ByteNummer: INT;
DBNummer: INT;




End_var

VAR_IN_OUT

Start: BOOL; 

End_var



IF Start THEN 

WORD_TO_BLOCK_DB(INT_TO_WORD(DBNummer)).DX[Bytenummer, Bitnummer] := TRUE; 




End_if;

Start := False; 


END_FUNCTION
Leider klappt es nicht so wie gewollt. es werden bei z.b. byte 10 immer mehrere bools gesetzt, obwohl ich bitnummer nur auf 3 gestetzt habe. nur wenn ich bitnummer auf 0 gestellt habe funktionert es. HELP. :D :confused:
 
Hallo,
ein FC hat kein Gedächtnis.
Das solltest du bei der "IF Start then ..."-Geschichte berücksichtigen und da immer sicher stellen, dass in den verwendeten Adressierungs-Variablen dann auch sinnvolle Zahlenwerte drin stehen. Ansonsten ist der Code an sich korrekt ... Der Fehler kann also nur in der Verwendung des FC1 oder drum herum stecken ...

Gruß
Larry
 
In dem Beispiel von Gebs ist DB_Nummer ein INT. Wenn du das mit einem BLOCK_DB machen willst so wäre die Syntax dafür : AUF #DB_Nummer
 
Zurück
Oben