Jepp, fast so hatte ich es auch gelöst, nur daß bei mir nix ausser einem Port-Pin wackelt:

Code:



; Hier für AT90S8515, AT90S1200, ...

/*
Die Register (GPRs) werden durch einen RESET nicht zurückgesetzt, sondern behalten ihre Inhalte!

Wirklich schwer wird es, wenn man mit VCC runter geht, weil sich dann die WDT-Zeiten ändern. Mit 0.19s (VCC=3V) käme man auf 5% Fehler, aber den Vergleich auf 5 (bzw. modulo 5) hab ich nicht in weniger als 10 Instruktionen geschafft. 

Noch nicht... ;-)
*/

#include <avr/io.h>

#define _IO(x) _SFR_IO_ADDR(x)

.text

; #1: PortB.2 als Ausgang
	sbi	_IO (DDRB), 2
	
; #2-#4: Toggle PortB.2
	inc	r0
	sbrs	r0, 1
	sbi	_IO (PORTB), 2

; #5-#6: WatchDog auf 0.49 Sekunden scharf machen (genauer als 0.97s)
	ldi	r16, (1 << WDE) | (1 << WDP2) | (1 << WDP0)
	out	_IO (WDTCR), r1

; #7: Warten, bis es wieder los geht (WatchDog-Reset)
0:
	rjmp 0b