 .NOLIST
 .INCLUDE <tn2313def.inc>
 .LIST
.dseg
.org SRAM_START
.CSEG
.org 0
.equ debug =0 ;kommentieren für die reale Welt
;------------------ Interrupt Vektoren ----------------------------------
	rjmp Reset
	rjmp INT0_	;External Interrupt0
	reti	;External Interrupt1
	reti	;Input capture interrupt 1
	reti	;Timer/Counter1 Compare Match A     
	reti	;Overflow1 Interrupt 
	Rjmp OVF0_	;Overflow0 Interrupt
	Rjmp URXC0_	;USART0 RX Complete Interrupt
	Rjmp UDRE0_	;USART0 Data Register Empty Interrupt
	reti	;USART0 TX Complete Interrupt 
	reti	;Analog Comparator Interrupt
.ifdef debug
	rjmp INT0_ 	;Pin Change Interrupt
.else
	reti
.endif
	reti	;Timer/Counter1 Compare Match B
	reti	;Timer/Counter0 Compare Match A     
	reti	;Timer/Counter0 Compare Match B     
	reti	;USI start interrupt
	reti	;USI overflow interrupt
	reti	;EEPROM write complete
	reti	;Watchdog Timer Interrupt
;------------------ Include Files ----------------------------------------
.include "IR_Dump.asm"
.include "Uart.asm"
.include "IR.asm"

;-------------------Reset + init -----------------------------------------
Reset:	cli
	ldi r16,low(Ramend)
	out spl,r16
	.ifdef sph
	ldi r16,high(Ramend)
	out sph,r16
	.endif
	sei
	rcall Uart_init
	rcall IR_init
;****************** Programm Start ***************************************
.ifdef debug
Start:	ldi zh,high(2*Ir_Werte) ;Zeiger auf gemessene Pulszeiten
	ldi zl,low(2*Ir_Werte)
	sts Time_Dump_H,zh	    ;Speichern, damit der Zeiger im 
	sts Time_Dump_L,zl	    ;Interrupt zur Verfügung steht
	sbi DDRB,7	    ;PB7 auf Ausgang (für PC Interrupt)


Loop:	rcall Key_get	;Gültiger Key ?
	brcs got_IR	;Ja :-) dann springe vor Freude

	in r3,PortB	;PB7 invertieren
                    ldi r16,0b10000000	;löst PC Interrupt aus
	eor r3,r16	;Vektor steht in der Simulation
	out PortB,r3	;auf Ext Interrupt 0
	rjmp Loop

got_IR:	nop 	;Tasten Code ist in r16
	rjmp Loop	
.else
;------------------ Simulation aus ---------------------------------------

Start:	rcall Key_get
	brcc PC-1	;springe wenn keine gültiger Code vorhanden
	rcall TX_out	;Tasten Code ist in r16 über Uart ausgeben
	rjmp Start 

.endif



