-> Hier kostenlos registrieren
Hallo, kennt jemand eine einfache Methode aus eine Byte 8 einzelne Bit's zu erstellen!
Ohne
L db20.db2.0
t bit_o
oder so etwas!!
Dennis
Ohne
L db20.db2.0
t bit_o
oder so etwas!!
Dennis
Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
U DB20.DBX2.0
AUF DB20
L DB2.0
t #temp_bit1
L DB2.1
t #temp_bit2
L DB2.2
t #temp_bit3
AUF DB20
u m0.0
u db20.1
=a0.0
Und warum machst Du so was?da ich Symbolnamen vor Abzulte Adresse eingestellt habe. Bei der Adressierung!!
Eben!aber so bald sich etwas verschieben würde, stimmen die Zuordnungen nicht mehr,
L P#DeinByte
LAR1
U [AR1,P#0.0]
= DeinBit0
U [AR1,P#0.1]
= DeinBit1
......
usw. usf.
Code:AUF DB20 u m0.0 u db20.1 =a0.0
Ah, jetzt ist der Groschen gefallen.Er will ja eben nicht absolut auf die Bitadressen zugreifen weil er sein Byte symbolisch adressiert hat.
Hier bleibt dir definitiv nichts anderes übrig als mit indirekter Adressierung zu arbeiten
.
Wo er recht hat, hat er (fast immer) recht.ob das so stimmt?
schließlich kann man auch bytes mit UW verknüpfen![]()
L 1
L "deinDB".deinByte
UW
==I
= deinBit0
L 2
L "deinDB".deinByte
UW
==I
= deinBit1
L 4
L "deinDB".deinByte
UW
==I
= deinBit2
............
............
usw. usf.
FUNCTION Byte_nach_bit_array :void
VAR_INPUT
Einbyte:BYTE; // Eingangsbyte
END_VAR
VAR_OUTPUT
Aus_bool_8_array:ARRAY[1..8] Of BOOL;
END_VAR
VAR_TEMP
Einbyte_intern:BYTE; // Eingangsbyte
Einbyte_at AT Einbyte_intern:ARRAY [1..8] OF BOOL;
schleife:INT;
END_VAR
Einbyte_intern:=Einbyte;
schleife:=1 ;
FOR schleife := 1 TO 8 BY 1 DO
Aus_bool_8_array[schleife]:=Einbyte_at[schleife];
END_FOR;
OK:=true;
END_FUNCTION
mein Programmvorschlag:
L #IN
SLW 12 // Bit 4 in A1 schieben
U >0
= bit4
SLW 1
U >0
= bit3
SLW 1
U >0
= ....
Also Bernard,Habe mir für solche Funktionen kleine parametrierbare FC`s in SCL gebaut,und in einer Libary abgelgt,somit habe ich die Funktionalität überall verfügbar.
Und da mir, für alle die nicht über SCL verfügen, die Lösung von Perfektionist am besten gefällt, werde ich mal das entsprechende 'Danke' drücken......
Ich brauche das jetzt nicht, aber nachdem hier sonst keiner mal ein Danke drückt, bekommst eins von mir.![]()
schleife:=1 ;
FOR schleife := 1 TO 8 BY 1 DO
Wir verwenden essentielle Cookies, damit diese Website funktioniert, und optionale Cookies, um den Komfort bei der Nutzung zu verbessern.
Siehe weitere Informationen und konfiguriere deine Einstellungen