
.include "C:\Program Files (x86)\Atmel\AVR Tools\AvrAssembler2\Appnotes\m16Adef.inc"

;================================= Таблица векторов прерываний 

.cseg

.org 0
rjmp reset
.org $00C
rjmp t1_compA
.org $026
rjmp t0_comp

.def Temp=R22
.def Temp1=R23
.def Temp2=R24

reset:

ldi r16,low(RAMEND)
out spl,r16
ldi r16,high(RAMEND)
out sph,r16

;================================= Инициализазия портов ввода-ввывода

ldi Temp,21
out DDRD,Temp 	; назначение ножек на ввывод и на ввод

sbi PORTD,0		;здесь: 0,2,4 - к светодиодам, 1,3,5 - к кнопкам	
sbi PORTD,1
sbi PORTD,2
sbi PORTD,3
sbi PORTD,4
sbi PORTD,5

;================================ Настройка таймера
ldi temp,0x27
out OCR1BH,temp	

ldi temp,0x10
out OCR1BL,temp

ldi temp,0x4E				
out OCR1AH,temp										
							
							
ldi temp,0x20				
out OCR1AL,temp				



ldi temp,0b00010010
out TIMSK,temp

ldi temp,0b00011001
out TCCR1B,temp				;без деления частоты, FastPWM с пределом OCR1A,
							;сброс текущего уровня на OCR1B по совпадению
ldi temp,0b00100011
out TCCR1A,temp				
							

ldi temp,0		 			
out TCNT1H,temp

ldi temp,0		 			
out TCNT1L,temp



ldi temp,78
out OCR0,temp

ldi temp,0b00011100
out TCCR0,temp

ldi temp,0
out TCNT0,temp

ldi temp1,0
ldi temp2,0


sei							;разрешение ВСЕХ прерываний отключено


;================================ ПРОГРАММА

Inf:					


rjmp Inf

;================================ ПРЕРЫВАНИЕ 


						
t1_compA:				
						
sbi pinD,4				
						
ldi temp,0		 			
out TCNT1H,temp

ldi temp,0		 			
out TCNT1L,temp

reti



t0_comp:

sbic pinD,1				
rjmp exit
in temp1,OCR1BH
in temp2,OCR1BL

out OCR1BL,temp2
out OCR1BH,temp1

exit:

reti
