Datenbank auf gesetztes Bit untersuchen

soma

Level-1
Beiträge
54
Reaktionspunkte
10
Zuviel Werbung?
-> Hier kostenlos registrieren
Folgendes Problem beschäftigt mich:
ich sammle in einer Datenbank auf 50 Bit Fehlermeldungen .
Das heißt wenn ein Fehler anliegt dann ist das Bit gesetzt.
Den Datenbaustein nutzt ein OP17 als Fehlermeldungsbereich,
was auch gut funktioniert.
Nun möchte ich mir eine einfache Funktion schreiben die
die Datenbank auf gesetzte Bits untersucht und mir dann einen MerkerBit
setzt,sobald eines der 50 Bit gesetzt ist.
Ich möchte jedoch nicht unbedingt per Copy and Paste ein 100 ZeilenFunktion
schreiben.
Deshalb die Frage ob man dies nicht vereinfachen kann?

Ich hoffe jemand kann mir ein wenig helfen.
mfg soma
 
Vergleich

Hi,
man kann Doppelwörter gegen Null vergleichen:

L DB50.DBD50
L 0
<>D
= "ein Bit ist gesetzt"


Gruss: V.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Oder als Schleife:

Code:
      AUF   "STOERMELDUNGEN DB"

      L     P#0.0 // Hier geht es bei DBW0 los
      T     #pointer_1 //Temp_Var

      L     0
      T     #ergebnis //Temp_VAr

      L     4                           //Anzahl Störmeldungen (Wortweise)
SC02: T     #zaehler  //Temp_Var

      L     DBW [#pointer_1]            // Lade Datenwort
      L     0                           // Lade 0
      ==I                               // keine Störmeldung !!!
      SPB   NUL2                        // Ergebnis nicht hochzählen
      L     #ergebnis                   // bei Erg <> 0 Ergebnis hochzählen
      L     1                           // um 1 erhöhen
      +I    
      T     #ergebnis

NUL2: NOP   0                           // Zeiger erhöhen aud nächstest DW
      L     #pointer_1
      L     P#2.0
      +D    
      T     #pointer_1
      L     #zaehler
      LOOP  SC02                        // Schleife solange, bis #zaehler auf 0

      L     #ergebnis                   // bei Ergebnis <> 0 liegt Fehler vor
      L     0
      <>I   
      =     "M1.0 Sammelfehler"
 
FC99 aus Standard Library, TI-S7 converting Blocks

Nun möchte ich mir eine einfache Funktion schreiben die
die Datenbank auf gesetzte Bits untersucht und mir dann einen MerkerBit
setzt,sobald eines der 50 Bit gesetzt ist.
Hallo,
mit dem FC99 lassen sich die gesetzten Bits in einem Datenwort sogar zählen.
 
Flankenbits

Hi,
nur als Erinnerung: Flanken von DWORDs macht man so:
Code:
L   DWORD_Störbits
L   Hilfs_DWord         // Zustände gespeichert
XOD
L   DWORD_Störbits
UD
T   DWORD_Flanken   // hier sind die Flankenbits
 
L   DWORD_Störbits
T   Hilfs_DWord

Schon hat man 32 Flankenauswertungen.

Gruss: V.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank für eure Hilfe, mit Vladis Idee habe ichs gemacht
und so gefällt mir das auch sehr gut.
Besser als meine 100 Zeilen.:rolleyes:
vielen Dank an alle:)
 
Zurück
Oben