Kann Zähler nicht bei Sprungbefehl setzen

Tigerkroete

Level-1
Beiträge
245
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Am besten schreibe ich erstmal den Code hin und erkläre dann das Problem:
Code:
U    M0.1 //Wenn "1" dann springe nicht
SPBN EIF
U    M0.1 //Muss man glaube ich nicht nochmal schreiben.
L    DB1.DBW 0 //lädt einen Wert aus dem Datenwort
ITB        //wandelt INT in BCD um
S    Z1   //setzt den Zähler
 
U    M0.1
R    M0.1
 
EIF: NOP 0
 
U    M0.3
R    Z1
Das Problem ist, dass diese Sache genau einmal nur funktioniert und ich verstehe nicht warum. Also wenn ich den Baustein lade und M0.1 setze, dann wird auch wie gewollt, mein Zähler gesetzt. Sobald ich ihn aber Rücksetze und betätige erneut M0.1 passiert nichts mehr. Wieso?

Folgendes funktioniert:
Code:
U    M0.1
S    M0.2
 
U    M0.2
L    DB1.DBW0
ITB
S    Z1
 
U    M0.2
R    M0.1
R    M0.2
 
U    M0.3
R    Z1

Also für mich wird in beiden Fällen bei Betätigung von M0.1, das Laden des Zählers genau einmal durchlaufen. Aber warum funktioniert es bei der ersten Methode nur einmal?

Viele Grüße,
Tigerkroete
 
Zuletzt bearbeitet:
Weil im ersten Fall am Eingang des Zählers immer eine 1 anliegt; das stellst Du durch den Sprungbefehl sicher. Der S - Befehl braucht aber eine Flanke des VKE.
 
Zurück
Oben