-> Hier kostenlos registrieren
Folgendes Problem:
Zeitschaltuhr das Uhrzeiten im Integerformat bearbeitet, wobei "123" 01:23Uhr entspricht und "0" z.B. 0:00Uhr. Funzt alles prima. Jetzt möchte ich aber verhindern, daß der Timer bei Eingabe unsinniger Uhrzeiten (z.B. "1263", was 12:63Uhr entsprechen würde) schaltet.
Umzu Überprüfen, ob Minuten größer 59 sind habe ich in u.a. AWL erst die Einschaltzeit #TEIN in BCD gewandelt, 8 Bit links, dann 8 Bit rechts geschoben, um die Stunden zu eliminieren, wieder in INT zu wandeln und zu überprüfen. Ist die Überprüfung auf Minuten >59 negativ, wird die Ausschaltzeit #TAUS geprüft. Es funktioniert alles bis zur Rückwandlung von #TAUS BCD nach Integer (ab Zeilen die mit ** anfangen).
Der letzte BTI-Befehl setzt die CPU (315-2DP) in Stop.
Ich komm nicht drauf, warum, da es beim ersten mal ja klappt.
L #TEIN //#TEIN in BCD wandeln
ITB
SLW 8 //sechs Stellen nach links verschieben
SRW 8 //sechs Stellen nach rechts verschieben
BTI //zurückwandeln in INT (nur beide niederwertigste Stellen)
L 59
>I //wenn größer 59
SPB RST //dann springe zur Marke "Reset"
L #TAUS //#TAUS in BCD wandeln
ITB
SLW 8 //sechs Stellen nach links verschieben
SRW 8 //sechs Stellen nach rechts verschieben
**BTI //zurückwandeln in INT (nur beide niederwertigste Stellen)
**L 59
**>I //wenn größer 59
**SPB RST //dann springe zur Marke "Reset"
NOP 0
Zeitschaltuhr das Uhrzeiten im Integerformat bearbeitet, wobei "123" 01:23Uhr entspricht und "0" z.B. 0:00Uhr. Funzt alles prima. Jetzt möchte ich aber verhindern, daß der Timer bei Eingabe unsinniger Uhrzeiten (z.B. "1263", was 12:63Uhr entsprechen würde) schaltet.
Umzu Überprüfen, ob Minuten größer 59 sind habe ich in u.a. AWL erst die Einschaltzeit #TEIN in BCD gewandelt, 8 Bit links, dann 8 Bit rechts geschoben, um die Stunden zu eliminieren, wieder in INT zu wandeln und zu überprüfen. Ist die Überprüfung auf Minuten >59 negativ, wird die Ausschaltzeit #TAUS geprüft. Es funktioniert alles bis zur Rückwandlung von #TAUS BCD nach Integer (ab Zeilen die mit ** anfangen).
Der letzte BTI-Befehl setzt die CPU (315-2DP) in Stop.
Ich komm nicht drauf, warum, da es beim ersten mal ja klappt.
L #TEIN //#TEIN in BCD wandeln
ITB
SLW 8 //sechs Stellen nach links verschieben
SRW 8 //sechs Stellen nach rechts verschieben
BTI //zurückwandeln in INT (nur beide niederwertigste Stellen)
L 59
>I //wenn größer 59
SPB RST //dann springe zur Marke "Reset"
L #TAUS //#TAUS in BCD wandeln
ITB
SLW 8 //sechs Stellen nach links verschieben
SRW 8 //sechs Stellen nach rechts verschieben
**BTI //zurückwandeln in INT (nur beide niederwertigste Stellen)
**L 59
**>I //wenn größer 59
**SPB RST //dann springe zur Marke "Reset"
NOP 0