для чего умножать частоту работы таймера?
можно по конкретней: тактовая мк и что нужно получить на выходе.
пишите в личку, посмотрю.
Код: Выделить всё
.cseg
.org 0
rjmp Init
reti ;rjmp EXT_INT0 ;External interrupt Request 0
reti ;rjmp EXT_INT1 ;External interrupt Request 1
reti ;rjmp TIMER2_COMP ;Timer/Counter2 Compare match
reti ;rjmp TIMER2_OVF ;Timer/Counter2 Overflow
reti ;rjmp TIMER1_CAPT ;Timer/Counter1 Capture Event
reti ;rjmp TIMER1_COMPA ;Timer/Counter1 Compate Match A
reti ;rjmp TIMER1_COMPB ;Timer/Counter1 Compate Match B
reti ;rjmp TIMER1_OVF ;Timer/Counter1 Overflow
reti ;rjmp TIMER0_OVF ;Timer/Counter0 Overflow
reti ;rjmp SPI_CTC ;Serial Tramsfer Comlete
.org 22Код: Выделить всё
USART_RXC: ;Процедура обработки
in temp,UDR ;Помещаем полученный бит в рабочий регистр
cbi UCSRB,RXCIE ;Запрещаем прерывание "прием закончен"
cpi temp,$31 ;Сравниваем полученное значение
breq send_symbol ;если равно то переходим
sbi UCSRB,RXCIE ;разрешаем прерывание "прием закончен"
retiКод: Выделить всё
USART_RXC:
in temp,UDR
cbi UCSRB,RXCIE
cpi temp,$31
breq send_symbol
sbi UCSRB,RXCIE
cbi UCSRA,RXC
reti
send_symbol:
ldi temp,$BF
rcall out_com
retКод: Выделить всё
USART_RXC:
in temp,UDR
cbi UCSRB,RXCIE
cpi temp,$31
breq send_symbol
sbi UCSRB,RXCIE
cbi UCSRA,RXC
reti
send_symbol:
ldi temp,$BF
rcall out_com
sbi UCSRB,RXCIE
cbi UCSRA,RXC
retiЧуть дополню. Можно использовать ORG, как Вы указали. Можно писать пару инструкций reti/nop на каждый вектор. Ну а если нужен переход на обработчик, то, конечно, лучше всего написать jmp, а не rjmp/nop или ORG и rjmp.GP1 писал(а):хочу напомнить что вектора у меги16 - 2-х словные и имеют только четные адреса $0002, $0004, $0006 и т.д., просто писать
reti без явного объявления адреса есть полный не-айс.
и на будующее не используй для меги16 и выше в адресах переходов на обработчик команды rjmp - она однословная, что опять без явного задания адреса вектора будет приводить к непредсказуемым результатам.
Да ничего сложного -Denikmar писал(а): Не понимаю связку команд
subi tempL,1 (из tempL будет вычитаться 1 )
sbci tempH,0 (непонимаю
brcc loop (тут как я понял если tempH = 0, то выйдем из цикла но)
З.Ы. Сильно не пинайте, AVR занимаюсь всего месяц мануалы смотрел но не доходит.
Код: Выделить всё
subi tempL,1 (из tempL будет вычитаться 1 )
sbci tempH,0 (непонимаю