Wie speichere ich eine Bitadresse ?

mega_ohm

Level-2
Beiträge
691
Reaktionspunkte
52
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Forum,

ich möchte für eine Fehler- History die Bit- Adresse der aufgetretenen Meldungen speichern.

Die Meldungen werden z.B. in DB1. DBW0 gesichert.
Bei neuer Meldung wird DB1.DBW0 in einer Schleife mittels Pointer gelesen. Wenn z.B. DB1.DBX0.5 =1, dann soll die Adresse gespeichert werden.
Wenn danach z.B. DB1.DBX0.7 =1, dann soll diese Adresse auch gespeichert werden. ( max. die letzen 32 Meldungen )

Wie stellt man sowas an ?

Mfg
 
Bei neuer Meldung wird DB1.DBW0 in einer Schleife mittels Pointer gelesen. Wenn z.B. DB1.DBX0.5 =1, dann soll die Adresse gespeichert werden.
Wenn danach z.B. DB1.DBX0.7 =1, dann soll diese Adresse auch gespeichert werden. ( max. die letzen 32 Meldungen )
Hallo mega_ohm,

durch Deine Schleife weißt Du ja schon an welcher Position das High Bit steht. (1-32)
Sobald Du ein High Bit erkennst, speicherst Du Dir den Wert des Schleifenzähler (1-32) in einen separaten DB und erhöhst sofort die Adresse der Speicherstelle (DBW).
Der Speicher DB würde dann nach dem ersten Durchgang so aussehen:
Code:
DB 2.DBW2 == 6 // Bit 5
DB 2.DBW4 == 8 // Bit 7
Du musst Dir allerdings merken dass Du das Bit schon gespeichert hast, sprich das Bit separat speichern.
Code:
AUF DB1
U   DBX [AR1, P#0.0]   // Störungs Bit
AUF DB2
UN  DBX [AR1, P#0.0]  // Speicher Bit
SPBN NO
        L #Zeiger  // Statisch Zeiger für neuste Störung
        SLD 3
        LAR 2
        L #Schleifenzaehler  // Schleifenzähler durch die Störbits 1-32
        AUF DB2
        T   DBW [AR2, P#0.0] // Fortlaufende Störungsnummer
        L  #Zeiger
        +2
        T  #Zeiger
NO: NOP 0
AUF DB1
U   DBX [AR1, P#0.0]  // Aktuellen Zustand merken
AUF DB2
=   DBX [AR1, P#0.0]  // und sichern

Ich hoffe der Code passt einigermaßen ;)
 
Zuletzt bearbeitet:
Zurück
Oben