Problem mit ITB

Keinstein

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Ihr,

ich bin wahrscheinlich der 100te, der mal ein Byte/Int zu char wandeln möchte. Dies will ich einfach über die BCD-Umwandluing erreichen, da ich mit den Strings in AWl noch nicht so klar komme, bzw. nicht weiß, wie ich mir dann daraus die Chars ziehe.

Mein Ziel: Lesen der Systemzeut (SFC1 - read system clock - funktioniert super) und Umwandeln der Zeit in einen Zeitstempel, anschließend versenden einer Nachricht/Daten inkl. Zeitstempel. Ideal: Zeitstempel in der Form "hh:mm:ss", h/m/s liegen als Byte vor.

Problem: Wandle ich manuel (über Var-Tabelle) ein Byte in BCD und dann in Char um (durch schiften und Addieren von 30h), klappt alles. Sobald ich jedoch meinen Code mit den Bytes aus der Uhrzeit füttere (z.B. mit dem "Sekunden-Byte") kommt mist raus. Mein Problem liegt ist "ITB".
Bsp.:
Manuell: ich gebe 59 ein für 59 Sekunden -> wird umgewandelt in ein Byte mit 59h und dann in zwei Chars '5''9' --> klappt, wie schon oben gesagt
Automatisch: Testweise nehme zyklisch im OB 32 ein Byte aus meinem Uhrzeit-Array (Länge 8, Typ Byte) namens DateAndTime[5] und lass dieses umwandeln; Folgendes passiert:
--> aus z.B. Sekundenstand 59 wird 89h und damit auch die Chars '8''9'.
Kann mir das jemand erklären? Die dezimal 59 wird vom ITB interpretiert wie 59h (ergibt 89) und dann in BCD gwandelt --> als Ergebnis habe ich 89h!

Code:
L     #DateTimeArray[5]
ITB
T MB 6


Kann mir das jemand erklären, bzw. geht die Lösung einfacher?
Danke und Gruß.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Paule,

vielen Dank! Du hast mir sehr geholfen.
Hab nun meinen Fehler gefunden. In der Variablentabelle wurde die Zeit bei mir in Hex angezeigt, so dass ich sie immer als 0 ..59h sah, und von dezimal ausging. Da ist so ne zusätzliche Umlandlung natürlich überflüssig.

Gruß
 
Zurück
Oben