Ein paar Fakten zu Bits in CoDeSys
Hallo,
eine kleine Zusammenfassung, einiges wurde schon gesagt:
1. Ein BOOL ist immer ein Byte gross es sei denn, es wird mit AT% explizit auf ein Bit gelegt.
2. Pointer zeigen immer auf Byte-Adressen. Bit-Pointer gibt es nicht! (d.h pointer + x schaltet den Pointer immer um x Bytes weiter). ADR(%M0.0) liefert einen Fehler.
3. Wenn man auf ein Bit in einem Wert zugreifen will kann man den Bitoperator verwenden, der funktioniert jedoch leider nur mit Konstanten : "dword.3". Insbesondere kann man nicht über die Bits eines Bytes iterieren.
4. In der Util.lib gibt es einige Funktionen zur Bitmanipulation:
"Extract" um ein Bit zu lesen
"Putbit" um ein Bit zu schreiben
"Pack" um 8 Bit zu einem Byte zusammenzufassen
"Unpack" um 8 Bit aus einem Byte zu extrahieren.
noch Fragen?
Bernhard