Also ich hab jetzt was gefunden und das auf meinen µC umgearbeitet. Die berechnung stimmt nicht genau. Der Timer schaltet nicht bei jeder sekunde aber so in etwa bei 1,5, das ist aber auch etwas nebensache/einstellungssache
Kann mir mal jemand den Code erklären?

Code:
;************************************************************************/
;*                                                                      */
;*			Precise 1 Second Timebase			*/
;*                                                                      */
;*              Author: Peter Dannegger                                 */
;*                      danni@specs.de                                  */
;*                                                                      */
;************************************************************************/
.nolist
.include"m16def.inc"

.equ	xtal	= 8000000
.equ	debounce = 100
.equ	remainder = xtal - xtal / debounce * debounce

.def	isreg	= r15
.def	wr0	= r16
.def	iwr0	= r17
.def	prescaler = r18
.def	second = r19

.list
	rjmp	init
	.org	OC1Aaddr
	rjmp	OC1Aint
;-------------------------------------------------------------------------
OC1Aint:
	in	isreg, sreg
;************************************************************************/
;*			Insert Key Debouncing Here			*/
;************************************************************************/

	ldi	iwr0, high( xtal / debounce - 1 )
	out	ocr1ah, iwr0
	ldi	iwr0, low( xtal / debounce - 1 )
	out	ocr1al, iwr0

	dec	prescaler
	brne	_oci1

	ldi	prescaler, debounce
	inc	second

	ldi	iwr0, high( xtal / debounce + remainder - 1 )
	out	ocr1ah, iwr0
	ldi	iwr0, low( xtal / debounce + remainder - 1 )
	out	ocr1al, iwr0
_oci1:
	out	sreg, isreg
	reti
;-------------------------------------------------------------------------
init:
	ldi	wr0, 0xFF
	out	ddrb, wr0

	ldi	wr0, high( ramend )
	out	sph, wr0
	ldi	wr0, low( ramend )
	out	spl, wr0

	ldi	wr0, 1<<WGM12^1<<CS10
	out	TCCR1B, wr0

	ldi	wr0, high( 8000000 / 100 - 1 )
	out	ocr1ah, wr0
	ldi	wr0, low( 8000000 / 100 - 1 )
	out	ocr1al, wr0
	out	tcnt1l, wr0
	ldi	prescaler, debounce

	ldi	wr0, 1<<OCIE1A
	out	TIMSK, wr0
	sei
main:
	ldi	second, 0
_mai1:
	cpi	second, 60
	breq	main
	out	ddrb, second
	rjmp	_mai1
;------------------------------------
Die Erklärung würde mir für den init Teil reichen. Danke