
;--------------------------------------------------------------------
;
; 	rcen_test
;
;	Läst eine LED am Pin PD0 blinken um ein arbeiten des
;	Prozessors zu checken. Das ganze ist für den unteren
;	Sockel des RCEN Fuse-Bit-Setzers damit man schauen kann
;	ob der Slave jetzt ohne Quarz läuft oder nicht
;
;
;--------------------------------------------------------------------

.include "1200def.inc"

.def pa   = r18
.def temp = r19

;------------------ los geht's --------------------------------------

	ldi temp, 0b00000001	; Port D, Pin 0 als Ausgang schalten
	out DDRD, temp
loop:
	sbi PORTD, 0		; LED an
	rcall pause		; einen Moment warten
	
	cbi PORTD, 0		; LED aus
	rcall pause		; einen Moment warten

	rjmp loop		; und wieder von vorne...
	
	
;-------------------------- pause --------------------------------------------
; abhängig vom Inhalt von reg. pa wird entspr. lange gewartet
; einmal pa entspricht einmal überlaufen des 8-Bit Timers mit
; einem Vorteiler von 1024, d.h. t= (1/fq) * 1024 * 256
pause:
	ldi pa, 5
	
pa_loop:
	; Vorteiler für den Timer auf 1024 setzen
	ldi temp, 0b00000101
	out tccr0, temp

	; das Überlaufbit des Counters zurücksetzen,
	in temp, tifr
	sbr temp, 2^tov0
	out tifr, temp

	; Den Zähler mit Null vorsetzen
	clr temp
	out tcnt0, temp

	; wenn tcnt0 überläuft wird tov0 gesetzt
cwait:	in temp, tifr
	sbrs temp, tov0
	rjmp cwait

	dec pa			; jetzt ist der Timer einmal übergelaufen, 
	brne pa_loop		; pa runterzählen, wenn noch nicht auf 0
				; dann nochmal hoch und den Timer neu aufziehen
	ret
	