.include "C:/Program files/Atmel/AVR Tools/AvrAssembler/Appnotes/tn2313def.inc"

.org 0
rjmp RESET
rjmp INT_0 
rjmp INT_1
rjmp TIMER1_CAPT
rjmp TIMER1_COMPA
rjmp TIMER1_OVF
rjmp TIMER0_OVF
rjmp USART0_RX
rjmp USART0_UDRE
rjmp USART0_TX
rjmp ANALOG_COMP
rjmp PCINT
rjmp TIMER1_COMPB
rjmp TIMER0_COMPA
rjmp TIMER0_COMPB
rjmp USI_START
rjmp USI_OVERFLOW
rjmp EE_READY
rjmp WDT_OVERFLOW

.org 19
.cseg
Reset:
ldi r30,ramend                                           ;стек
out spl,r30

START:
ldi r16,0b01000000
out TIMSK,r16                                          ;работа компаратора А таймера 1
ldi r16,0b00001000                                ;
out DDRB,r16                                          ;3 бит порта Б вывод
ldi r16,0b10000001
out TCCR1A,r16                                     ;инв 8 битный ШИМ



ldi r18,50
out OCR1AL,r18                                       ;загрузка начальной скважности в регистр сравнения
ldi r19,0
out OCR1AH,r19                                     ;в старшие разряды 0
ldi r16,0b00000001
out TCCR1B,r16                                     ;запуск таймер СК/1
ldi r16,0
out TCNT1H,r16                                  ;обнуляем таймер
out TCNT1L,r16
sei                                                            ;разрешаем прерывания

main:
cpi r25,1                                               ;равен ли р25 еинице
breq end                                              ;если да то на end
rjmp main                                          ;если нет то к главной программе


end:
cli                                                            ;запрет прерываний
ending1:rjmp ending1


TIMER1_COMPA:
in r31,SREG                                            ;запоминание SREG

Sbis PortB,3                                          ;eустановлен ли 3 бит порта в единицу
rjmp vozvrat                                       ;если нет, то на возврат
ldi r28,6                                                  ;если да, то добавляем в р26 число 6
add r18,r28                                         ;добавляем к скважности число 6
out OCR1AL,r18                               ;записываем в регситр сравнения
cpi r18,0xFE                                      ;сравниваем равен лим регистр сравнения FE
breq konec                                        ;если да то в конец
out SREG,r31                                   ;выводим SREG
reti                                          

vozvrat:
out SREG,r31
reti

konec:
inc r25                                                 ;инкремент р25
ldi r18,0xFE                                       загрузка в р18 числа FE                              
out OCR1AL,r18                             ;устанавливаем скважность FE
out SREG,r31
reti

;TIMER1_COMPA:






TIMER1_COMPB:
;RESET:
INT_0:
reti
INT_1:
reti
TIMER1_CAPT:
reti
;TIMER1_COMPA:
;reti
TIMER1_OVF:
reti
TIMER0_OVF:
reti
USART0_RX:
reti
USART0_UDRE:
reti
USART0_TX:
reti
ANALOG_COMP:
reti
PCINT:
reti
;TIMER1_COMPB:
TIMER0_COMPA:
reti
TIMER0_COMPB:
reti
USI_START:
reti
USI_OVERFLOW:
reti
EE_READY:
reti
WDT_OVERFLOW:
reti
