.include "2313def.inc"

.def Temp1	  = R16		;Allgemeines Register

.equ FlagTIMSK	  = 0b01000000	;Timer Compare A 
.equ StartTC1	  = 0b00000101	;Systemtakt/1024

.equ PinSleep	  = PD6		

.CSEG
.ORG 0x00
;*********************************************************************
;Interrupt-Tabelle
	RJMP Init		;Reset
	RETI			;Externer Interrupt0
	RETI			;Externer Interrupt1
	RETI			;Timer/Counter 1 Capture
	RJMP TimerTC1		;Timer/Counter 1 Compare A
	;RETI			;Timer/Counter 1 Compare B (nicht 2313)
	RETI			;Timer/Counter 1 Overflow 
	RETI			;Timer/Counter 0 Overflow
	;RETI			;SPI-Übertragung beendet (nicht 2313)
	RETI			;UART: Byte empfangen
	RETI			;UART: Datenregister leer
	RETI			;UART: Transfer beendet
	RETI			;Analog-Komparator
;---------------------------------------------------------------------


;*********************************************************************   
;Initialisierung                          
;*********************************************************************   
Init:	LDI	Temp1, RAMEND 	;Stackpointer initialisieren
	OUT	SPL,Temp1
	
	;Port D als Ausgabeport einrichten und auf LOW setzen
	LDI	Temp1, 0xFF
	OUT	DDRD, Temp1
	LDI	Temp1, 0x00
	OUT	PORTD, Temp1	

	;Interrupt für Compare A vorbereiten
	LDI 	Temp1, FlagTIMSK
	OUT	TIMSK, Temp1	

	;Zählregister TC1 auf 0 setzen
	LDI 	Temp1, 0x00
	OUT 	TCNT1H, Temp1
	OUT	TCNT1L, Temp1
	
	;Compare-Register definieren 
	LDI	Temp1, HIGH(65000)
	OUT	OCR1AH, Temp1
	LDI	Temp1, LOW(65000)
	OUT	OCR1AL, Temp1

	;Sleep / Idle-Modus aktivieren
	LDI	Temp1, 0b00100000
	OUT	MCUCR, Temp1

	SEI
	RJMP	Main
;---------------------------------------------------------------------


;*********************************************************************  
;Hauptprogramm                                              
;*********************************************************************   
Main:	
	;Timer TC1 starten
	LDI	Temp1, StartTC1
	OUT	TCCR1B, Temp1

	Sleep

	SBI	PORTD, PinSleep

EndMain:
	RJMP 	EndMain
;---------------------------------------------------------------------


;********************************************************************* 
;Timer                                         
;*********************************************************************   
TimerTC1:	
	
	RETI
;---------------------------------------------------------------------




