.include "C:\Program Files\Atmel\AVR Tools\AvrAssembler\Appnotes\m128def.inc"

.def temp=r16
.def RAM=r17
.def KPNP=r18
.def KPNN=r19
.def KPN=r20



.dseg

min:  .byte 1
max:  .byte 1
puls: .byte 1


.cseg
.org 0



jmp Reset
jmp INT_0
jmp INT_1
jmp INT_2
jmp INT_3
jmp INT_4
jmp INT_5
jmp INT_6
jmp INT_7
jmp TIMER2_COMP
jmp TIMER2_OVF
jmp TIMER1_CAPT
jmp TIMER1_COMPA
jmp TIMER1_COMPB
jmp TIMER1_OVF
jmp TIMER0_COMP
jmp TIMER0_OVF
jmp SPI_STC
jmp USART0_RX
jmp USART0_UDRE
jmp USART0_TX
jmp AnDC
jmp EE_RDY
jmp ANA_COMP
jmp TIMER1_COMPC
jmp TIMER3_CAPT
jmp TIMER3_COMPA
jmp TIMER3_COMPB
jmp TIMER3_COMPC
jmp TIMER3_OVF
jmp USART1_RX
jmp USART1_UDRE
jmp USART1_TX
jmp TWI
jmp SPM_RDY

;Reset:
INT_0:
INT_1:
INT_2:
INT_3:
;INT_4:
;INT_5:
INT_6:
INT_7:
TIMER2_COMP:
TIMER2_OVF:
TIMER1_CAPT:
TIMER1_COMPA:
TIMER1_COMPB:
TIMER1_OVF:
TIMER0_COMP:
TIMER0_OVF:
SPI_STC:
USART0_RX:
USART0_UDRE:
USART0_TX:
AnDC:
EE_RDY:
ANA_COMP:
TIMER1_COMPC:
TIMER3_CAPT:
TIMER3_COMPA:
TIMER3_COMPB:
TIMER3_COMPC:
TIMER3_OVF:
USART1_RX:
USART1_UDRE:
USART1_TX:
TWI:
SPM_RDY:

                   reti                       

;***********************************************************************************
;                                   
;***********************************************************************************

Reset:            
                   ldi temp,0b00000000     
				   out DDRA,temp              
				   ldi temp,0b11111111
				   out DDRD,temp              
                   ldi temp,0b00010111
				   out DDRB,temp              

                   ldi temp,0b00000000
				   out DDRE,temp     


                   ldi temp,High(RamEnd)
				   out SPH,temp               
                   ldi temp,Low(RamEnd)
				   out SPL,temp               
                   
				   ldi temp,0b00100000
				   out MCUCR,temp

                   ldi temp,0b00110000
                   out EIMSK,temp
				   
                   ldi temp,0b00000101
                   out EICRB,temp

                   ldi temp,9
				   sts max,temp
				   ldi temp,0
				   sts min,temp
				   ldi temp,2
				   sts puls,temp 

				   sei                       

;************************************************************************************
;                                      
;************************************************************************************
 

Go:               rjmp Go                  

;************************************************************************************
;                                  INT
;************************************************************************************
INT_4:
                  in temp,PinE
                  cpi temp,16
				  breq OutPut4
				  cpi temp,48
				  breq Increm4
				  rjmp OutPut4
Increm4:          inc KPNP
                  ldi KPNN,0
            	  lds temp,puls				  
				  cp KPNP,temp				   
				  brsh Plus
                  rjmp OutPut4
Plus:             inc KPN
                  ldi KPNP,0
                  lds temp,max
                  inc temp
                  cp KPN,temp
                  brne back4
                  dec KPN
back4:            dec temp
OutPut4:		  reti



;************************************************************************************************
INT_5:
                  in temp,PinE
                  cpi temp,32
				  breq OutPut5
				  cpi temp,48
				  breq Increm5
				  rjmp OutPut5
Increm5:          inc KPNN
                  ldi KPNP,0
                  lds temp,puls
				  cp KPNN,temp
				  brsh Minus
				  rjmp OutPut5
Minus:            dec KPN
                  ldi KPNN,0
                  lds temp,min
                  dec temp
				  cp KPN,temp
                  brne back5
                  inc KPN				  
back5:			  inc temp
OutPut5:          reti

