Source file: /~heha/basteln/m/Kram/dccrail-avrgcc.zip/binärgleich/analog.S

/********************************************************************************
 * DCC Wagen Decoder Software V1.0						*
 * Copyright 2011 Toralf Wilhelm						*
 *										*
 * private Nutzung erwünscht, gewerbliche Nutzung erfordert zwingend meine Zustimmung! *
 * Datei:	analog.inc							*
 * Kontakt:	toralfwilhelm@web.de						*
 * Webseite:	www.toralfwilhelm.de						*
 * Version:	01/2011 Version 1 Start						*
 * Beschreibung: analog/digital Umschaltung zur DCC Wagen Decoder Software	*
 ********************************************************************************/
#include "definitionen.h"

/********************************
 * auf Analogbetrieb umschalten *
 ********************************/
ANALOG_FAHRT:
	sbrs	DCCreg,keinDCC	// wenn kein DCC Signal 1x springen
	 ret
//SET_ANALOG:
	lds	w, analog_Ri_Zaehler	// Entprellung ca. 3sek Verzögerung bei Richtungswechsel 
	tst	w
	brne	3f
	inc	w
	;sts	3f, w		// Huch, Codesegment?? Muss ein Bug sein.
	sts	0x0558,w	// Binärgleichheit herstellen
	lds	XL,analog_Richtung
	lds	XH,analog_Richtung+1
	in	w,DCCport
	sbrc	DCCreg,richtung_inv	// wenn Fahrrichtung nicht reversiert 1x springen
	 com	w
	sbrs	w,DCCpin	// Richtung setzen
	 rjmp	1f
//loesche_Rich_bit:
	subi	XL,1
	brcc	2f
	cbr	DCCreg,(1<<richtung)
	rjmp	3f
1:
	adiw	XL,1
	brcc	2f
	sbr	DCCreg,(1<<richtung)
	rjmp	3f
//analog_Entprellung:
2:	sts	analog_Richtung, XL
	sts	analog_Richtung+1, XH
3:
	sbrc 	DCCreg,analog_ein	// wenn noch nicht umgeschaltet 1x springen
	 ret			// sonst fertig

	ldi	w,EECV13	// Hole Analogmodus aktive Funktionen
	sts	EE_Adresse,w
	rcall	eepromlesen
	mov	w3,w

	rcall	F_NEU_EINLESEN

	sbr	DCCreg,(1<<analog_ein)
	ret
Detected encoding: UTF-80