Hallo @all
Ich habe mir gerade die Version 4.99.55 heruntergeladen und installiert. Leider ist in der Bit-Verarbeitung ein neuer Bug. Wenn die Bitnummer als Variable übergeben wird, funktioniert es jetzt. Wird die Bitnummer allerdings als Konstante angegeben, dann wird im Assemblerquelltext statt der Bitnummer eine Bitmaske an die entsprechende Routine übergeben.
aus
wird
Code
LDI _ACCBLO, Test.M AND 0FFh
LDI _ACCBHI, Test.M SHRB 8
LDI _ACCA, 008h
RCALL SYSTEM.TestBit8
anstatt
Code
LDI _ACCBLO, Test.M AND 0FFh
LDI _ACCBHI, Test.M SHRB 8
LDI _ACCA, 003h
RCALL SYSTEM.TestBit8
Wenn man den Optimizer benutzt, ersetzt dieser den bei Byte-Variablen und konstanter Bitnummer
nicht notwendigen Funktionsaufruf durch den Assemblerbefehl SBRS. Wegen der falschen Bitnummer generiert er aber einen ungültigen Op.-Code, was der Assembler dann anmeckert.
Der Optimizer erzeugt
Code
LDI _ACCBLO, Test.M AND 0FFh
LDI _ACCBHI, Test.M SHRB 8
LD _ACCB, X
SBRS _ACCB, 8
anstatt
Code
LDI _ACCBLO, Test.M AND 0FFh
LDI _ACCBHI, Test.M SHRB 8
LD _ACCB, X
SBRS _ACCB, 3
Achtung !
Alle Programme, die Incl(), Excl(), Toggle(), SetBit() oder Bit() mit einer Konstanten als Bitnummer verwenden, sind nach meinen Erkenntnissen fehlerhaft.
Gruß
Thomas