/********************************************************************************
* DCC Wagen Decoder Software V1.0 *
* Copyright 2011 Toralf Wilhelm *
* *
* private Nutzung erwünscht, gewerbliche Nutzung erfordert zwingend meine Zustimmung! *
* Datei: Fahrbefehle.inc *
* Kontakt: toralfwilhelm@web.de *
* Webseite: www.toralfwilhelm.de *
* Version: 01/2011 Version 1 Start *
* Beschreibung: hier wird die Richtungsinfo aus den Fahrbefehlen gwonnen *
********************************************************************************/
#include "definitionen.h"
/**************************
* Geschwindigkeit setzen *
**************************/
// hier wird die Richtungsinfo aus den Fahrbefehlen gwonnen zuerst Basis Format
// die neuen Daten kommen in w hier an
V_BASIS: // V Berechnung 14 und 28 Fahrstufen
// zuerst Richtung schreiben
mov w2,w // Daten sichern
sbrc DCCreg,richtung_inv // wenn Fahrrichtung nicht reversiert 1x springen
com w2 // ansonsten wird neue Richtung gedreht
bst w2,5 // hole Richtungsbit
clr w2 // vergleiche Neues Richtungsbit mit altem
bld w2,richtung
eor w2,DCCreg
sbrs w2,richtung // wenn gesetzt -> Richtung geändert 1x springen
rjmp 1f // wenn nicht weiter mit..
mov w2,DCCreg // Fahrtrichtung drehen
com w2
bst w2,richtung
bld DCCreg,richtung // nach DCC Register
1: // Fahrstufen setzen
sbrc DCCreg,fahrstufen // 0=14 Fahrstufen 1x springen
ret
bst w,4 // Lichtbit holen
lds w3,Funktionen
bld w3,FL // und in FL ablegen
lds w,Funktionen
cp w,w3
breq 1f
rcall F_NEU_EINLESEN
1: ret
// Daten kommen in w und instruktionsByte kommt in w2 hier an
ERW_OPERATION: // 128 Fahrstufen setzen
sbrs DCCreg,fahrstufen // wenn Dekoder mit 14 FS arbeitet (CV29 bit1=0)
ret // gleich wieder zurück
cpi w2,0b00111111 // auf erw_oper_128_FS testen
breq 1f // wenn gleich 1x springen
ret // ansonsten gleich zurück
// zuerst wieder Richtung schreiben
1: mov w2,w // Daten sichern
sbrc DCCreg,richtung_inv // wenn Fahrrichtung nicht reversiert 1x springen
com w2 // ansonsten wird neue Richtung gedreht
bst w2,7 // hole Richtungsbit
clr w2 // vergleiche Neues Richtungsbit mit altem
bld w2,richtung
eor w2,DCCreg
sbrs w2,richtung // wenn gesetzt -> Richtung geändert 1x springen
ret
mov w2,DCCreg // Fahrtrichtung drehen
com w2
bst w2,richtung
bld DCCreg,richtung // nach DCC Register
ret
Detected encoding: UTF-8 | 0
|