Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: Schieben von Bits

  1. #1
    Registriert seit
    25.07.2006
    Beiträge
    7
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    Ich habe da ein Problem.
    Ich muss die Funktion des FC 92 selbst programmieren.
    Es soll also ein Schieberegister werden, dem ich die Anzahl der zu schiebenden Bits vorgebe, die Adresse ab welchem Bit geschoben werden soll muss ebenfalls eingeben werden. Ausserdem muss man angeben können, ob das Bit das eingeschoben wird "0" oder "1" ist.
    Leider weiß ich nicht wie ich anfangen soll.
    Für einen Denkanstoß wäre ich wirklich dankbar!

    Gruß
    Florian
    Zitieren Zitieren Schieben von Bits  

  2. #2
    Florian ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    25.07.2006
    Beiträge
    7
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo nochmal,

    ich glube ich habe jetzt einen brauchbaren Lösungsansatz gefunden.
    Leider klappt es mit der Umsetztung noch nicht so, hoffe ihr könnt mir helfen den ich bin blutiger Anfänger.

    1.Pointer erzeugen, der auf das Startbit zeigt wo das Bit eingeschoben werden soll
    2.Das Bit auf das der Pointer nun zeigt in ein temporären Speicher (Temp1) ablegen
    3. Das einzuschiebende Bit nun in die Adresse schieben, auf das der Pointer zeigt
    4. Den Pointer um 1 nach links schieben

    5. SChleifenanfang mit n Durchläufen:
    6. den Inhalt von Temp 1 in Temp2 schieben
    7. Das Bit auf das der Pointer nun zeigt, in Temp1 sichern
    8. Inhalt von Temp2 in die Adresse schiebn, auf das der Pointer zeigt
    9. Pointer 1 nach links schieben
    10. Sprung auf Schleifenanfang

    11. Ende

    Kann man das so machen, oder ist es völlig unbrauchbar?
    Ich bin echt für jede Hilfe dankbar!

    Gruß Florian

  3. #3
    Florian ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    25.07.2006
    Beiträge
    7
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,
    wenn irgendwas nicht klar ist, dann müßt ihr einfach fragen!
    Wäre schön wenn ihr kurz eure Meinung zu meinem Lösungsansatz schreiben könntet, weil ich echt nicht mehr weiter weiß.
    Vielleicht bin ich ja auf dem Holzweg...

    Vielen Dank!

    Gruß Florian

  4. #4
    Registriert seit
    22.07.2004
    Beiträge
    749
    Danke
    41
    Erhielt 66 Danke für 47 Beiträge

    Standard

    Hallo,
    direkt helfen kann ich dir nicht, aber hast du hier mal die Suchfunktion benutzt? Also da kommen ja doch viele Beiträge zum Thema Schieberegister vielleicht kannst du da mal mit rein gucken, sonst weiß ich es leider auch nicht.
    Gruß

  5. #5
    Registriert seit
    13.09.2005
    Beiträge
    633
    Danke
    8
    Erhielt 8 Danke für 6 Beiträge

    Standard

    Gib' mal ein paar konkrete Beispiele anhand von Bitmustern vor und nach dem Schieben, sowie den dazugehörigen Parametern.

    Vielleicht läßt sich da was machen.

    Mit einer einfachen XOR - Verknüpfung kannst du z.B. alles nach links schieben.

  6. #6
    Florian ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    25.07.2006
    Beiträge
    7
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    hier ein Beispiel
    Angehängte Dateien Angehängte Dateien

  7. #7
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.697 Danke für 1.949 Beiträge

    Standard

    @Florian

    Beispiel nicht zu öffnen, mach doch mal ne einfache Textdatei.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  8. #8
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.224
    Danke
    630
    Erhielt 955 Danke für 769 Beiträge

    Standard

    In 162 Bytes kann nicht viel Word stecken ...
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  9. #9
    Florian ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    25.07.2006
    Beiträge
    7
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich hoffe man erkennt was ich meine:

    vor dem schieben:

    (o.7) 00111010 (0.0) an 0.4 wird eine 0 eingeschoben
    (1.7) 00111010 (1.0)
    (2.7) 00111010 (2.0)


    nach dem schieben:

    (o.7) 01101010 (0.0)
    (1.7) 01110100 (1.0)
    (2.7) 00111000 (2.0)

    mit eingang N will ich festlegen wieviel Bits verschoben werden sollen, also hier z.B.14
    das letzte Bit wird rausgeschoben und geht verloren
    Und mit Eingang S_BIT will ich festlegen wo das Bit eingeschoben werden muss (also hier 0.4)
    Ebenfalls will ich festlegen können, ob das Bit was ich einschiebe 1 oder 0 ist (also hier 0)

    Gruß Florian

  10. #10
    Registriert seit
    13.09.2005
    Beiträge
    633
    Danke
    8
    Erhielt 8 Danke für 6 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Eigentlich hätte ein Aufschrei durch das Forum gehen müssen.
    Mit der von mir angegebenen Bitmaske invertiert man Bits und kann damit kein Schieberegister bauen. Mein Fehler.

    Meine Tangasi T30 Kenntnisse (alter mit Assembler programmierbarer Prozessor) sind schon etwas eingerostet.

    Also hier die Lösung:

    Nehmen wird mal an wird haben die Zahl 18 (0001 0010) in dem Double stehen und wollen das ganze um 2 Stellen nach links schieben.

    Eine einfache Muliplikation mit 2^2 bringt die Verschiebung. (^2 entspricht den Stellen um die verschoben werden soll)

    Als Ergebnis erhalten wir 72 (0100 1000).


    Da wir aber nicht alle Stellen, sondern nur die ersten 4 verschieben wollen bauen wir uns 2 Filter:
    (Bei den Filtern entspricht ^4 den Stellen die stehen bleiben sollen)

    Einmal filtern wir die ersten 4 Stellen des Ergebnisses mit

    0100 1000
    &1111 0000 (2^8 - 2^4)
    =0100 0000

    Danach filtern wir den Ursprungswert mit einem zweiten Filter:

    0001 0010
    &0000 1111 (2^4 - 1)
    =0000 0010

    Die beiden Filterergebnisse verknüpfen wird durch ein OR miteinander:

    0100 0000
    ^0000 0010
    = 0100 0010


    Ist das das Ergebnis das du erzielen willst?

    Wo willst du das Bit einschieben, an welcher Stelle an dem hier angeführten Beispiel?

Ähnliche Themen

  1. Uhrzeit in DB schieben
    Von bastler im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 17.04.2011, 12:06
  2. Bestimmte Bits und eine Real an mehrere FB schieben
    Von trinkiwinki im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 30.10.2007, 12:08
  3. Doppelwörter Schieben
    Von Waelder im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 08.03.2007, 16:35
  4. Daten im DB schieben
    Von otto99 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 01.03.2006, 11:13
  5. Bits in temporäres Byte mappen und gesetzte Bits zählen
    Von yetibrain im Forum PC- und Netzwerktechnik
    Antworten: 3
    Letzter Beitrag: 19.02.2005, 16:31

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •