;------------------------- ; Автор: Буров Роман ; e-mail: Romansansay@yandex.ru ; 2017 г. ;------------------------- ;.include "tn2313adef.inc" .def temp = r16 ;регистр для обмена данными .def flag = r17 ;копия в регистр порта B .def time = r18 ;Для определения времени работы таймера .def Timstat = r19 ;Статус таймера 16 бит Если 1, то событие случилось .def INTs = r20 ; переменная для регистра прерываний rjmp RESET reti ;INT0 reti ;INT1 reti ;TIM1_CAPT reti ;TIM1_COMPA rjmp TIMER1_OVF rjmp TIMER0_OVF reti ;USART0_RXC reti ;USART0_DRE reti ;USART0_TXC reti ;ANA_COMP rjmp PCINT reti ;TIM1_COMPB reti ;TIM0_COMPA reti ;TIM0_COMPB reti ;USI_START reti ;USI_OVERFLOW reti ;EE_READY reti ;WDT_OVERFLOW PCINT: ;обработка сигнала с подрулевого лепестка ldi time,30 ;5-~0.25 сек, 60 - 1 сек,120 - 2 сек,240 - 4 сек ldi temp,0b00000011 out TCCR0B,temp ;Запускаем делитель таймера 0 на 64 reti TIMER0_OVF: dec time ; c каждой итерацией уменьшаем переменную Time breq end_timer reti end_timer: clr temp out TCCR0,temp ;Останавливаем таймер 0 in flag,PINB ;Считываем пины порта В в переменную SBRS flag,1 ;Пропустить ветвь если бит 1 = 1 rjmp endint ;Черный - быстрый режим дворников SBRS flag,0 ;Пропустить ветвь если бит 0 = 1 rjmp slow ;Стеклоомывайка SBRS flag,3 ;Пропустить ветвь если бит 3 = 1 rjmp slow ;Желтый - щикл - медленно SBRS flag,2 ;Пропустить ветвь если бит 2 = 1 rjmp slow ;Прерывистый режим(коричневый) rjmp RESET ;Уходим в ресет, если ничего не нажато slow: ;Медленный ход ldi temp,(1<