
.device ATtiny2313
.include "C:/Program files/Atmel/AVR Tools/AvrAssembler/Appnotes/tn23134def.inc"

.org 0
rjmp INT_1
rjmp TIM1_CAPT
rjmp TIM1_COMPA
rjmp TIM1_OVF
rjmp RESET                 ;aaeoi?a i?a?uaaiee
rjmp INT_0
rjmp TIM0_OVF
rjmp USART0_RXC
rjmp USART0_DRE
rjmp USART0_TXC
rjmp ANA_COMP
rjmp PCINT
rjmp TIMER1_COMPB
rjmp TIMER0_COMPA
rjmp TIMER0_COMPB
rjmp USI_START
rjmp USI_OVERFLOW
rjmp EE_READY
rjmp WDT_OVERFLOW
.cseg
.org 19
Reset:
ldi r30,RamEnd          ;инициализация стека
out spl,r30
START:
ldi r16,0b01000000
out TIMSK,r16          ;разрешаем рабоу прерывания Тааймера 1 .. Комп А
ldi r16,0b00001000
out DDRB,r16            ; объявляем третий бит Порта Б как вывод
ldi r16,0b10000001
out TCCR1A,r16              ;ШИМ 8 разрядов,, устанавливается при прямом ходе



ldi r18,50
out OCR1AL,r18                      ;начальная скважность
ldi r19,0
out OCR1AH,r19
ldi r16,0b00000101
out TCCR1B,r16                     ;запуск таймера с частотой \1024
ldi r16,0                                ;обнуляем таймер
out TCNT1H,r16
out TCNT1L,r16
sei                                  ;обнуляем таймер

main:
cpi r25,1                        ;сравниваем, равен ли регистр 25 единице
breq end                      ;если да то переходим по ссылке
rjmp main                   ;если нет, то возвращаемся к проерке регистра 25


end:
cli                                  ;запрет прерыаний
ending1:rjmp ending1       ;бесконечный цикл


TIM1_COMPA:
in r31,SREG                   ;запоминание регситрв флагов

Sbis PortB,3                  ;пропуск если 3 бит Порта Б установлен
rjmp vozvrat              ;переходим по ссылке
inc r18                         ;инкремент р18
out OCR1AL,r18         ;записываем в компаратор р18
cpi r18,0xFE               ;равен ли р18 FE
breq konec              ;если равен, то переходим по ссылке
out SREG,r31        ;есл и нет, то возвращаем значения регистров флагов
reti                           ;возвращаемся из прерывания
 
vozvrat:
out SREG,r31               
reti

konec:
inc r25                             ;инкремент р25
ldi r18,0xFE                        ;записываем в р18 FE
out OCR1AL,r18              ;записываем в компаратор FE
out SREG,r31                  ;возвращаем SREG
reti                                ;возврат из перывания

TIMER1_COMPB:
;RESET:
INT_0:
reti
INT_1:
reti
TIM1_CAPT:
reti
;TIM1_COMPA:
;reti
TIM1_OVF:
reti
TIM0_OVF:
reti
USART0_RXC:
reti
USART0_DRE:
reti
USART0_TXC:
reti
ANA_COMP:
reti
PCINT:
reti
;TIMER1_COMPB:
TIMER0_COMPA:
reti
TIMER0_COMPB:
reti
USI_START:
reti
USI_OVERFLOW:
reti
EE_READY:
reti
WDT_OVERFLOW:
reti
ending: rjmp ending