Помогите, плz, вкурить в такую вот строчку
LDI R16, (1<<RXEN)|(1<<TXEN)|(0<<RXCIE)|(0<<TXCIE)|(0<<UDRIE)
Я знаю, что здесь связано что-то со сдвигами и побитовыми "или"...
Можно ли разжевать на примере?
Тафайте для наглядности заменим RXEN на какой-нибудь номер бита.НАПАЛМ писал(а):RXEN, TXEN, RXCIE, TXCIE, UDRIE - имена битов, за ними скрываются их номера.
(1<<RXEN) - это означает, что бит под номером RXEN будет установлен в 1. Все остальные биты, которые не прописаны у вас, или прописаны с нулями, будут установлены в 0.
Код: Выделить всё
Clock_Plus:
;+ В temp текущее значение в BCD формате, которое мы получили нажав
;+ кнопку SET
; push temp
ldwi X,(BUFDS1337+dsDay)
ldwi Z,Setting_Clock*2
clr temp
lpm rab,Z+ ;- Получаем границы изменения
lpm rab1,Z+
add temp,rab
subi temp,-1
brhc INIT_ZNASHENIE
SUN4:
sub temp,rab
st X+,temp
pop temp
ret
INIT_ZNASHENIE:
subi temp,-6
rjmp SUN4
Setting_Clock: .db 0x66,0x24,0x60,8,0x32,0x13,0x99
В части 0<<N выражение лишено смысла, так как исходно значение берется равным 0. Таким способом можно устанавливать единицы в заданном разряде или "оптом" сбросить всё содержимое в 0 если будет присутствовать всего один элемент вида 0<<N.BlYur писал(а):
LDI R16, (1<<RXEN)|(1<<TXEN)|(0<<RXCIE)|(0<<TXCIE)|(0<<UDRIE)
Код: Выделить всё
TCCR0 = (0<<CS02) | (1<<CS01) | (0<<CS00); /* Set timer prescaller to 8 (2MHz) */Код: Выделить всё
TCCR0 |= (0<<CS02) | (1<<CS01) | (0<<CS00); /* Set timer prescaller to 8 (2MHz) */Кто хочет поразмять мозг?
Код: Выделить всё
Move_interrupts:
; Enable change of Interrupt Vectors
ldi r16, (1<<IVCE)
out MCUCR, r16
; Move interrupts to Boot Flash section
ldi r16, (1<<IVSEL)
out MCUCR, r16
ret
Нет, таблица располагается по определенному адресу и перенести её нельзя, вернее будет сказать, что вектора прерываний имеют фиксированный адрес.После попадания в BOOTLOADER я могу перенести таблицу прерывания в область Бутлоадера
Нет, таблица всего одна.те нужно пользоваться 2-я независимыми таблицами прерываний, это возможно?
Да. Изменением бита IVSEL в регистре MCUCR для данного камня. Устанавливаете бит IVCE в "1" и затем в течении 4 тактов нужно занести нужное значение в IVSEL.Kill17 писал(а): После попадания в BOOTLOADER я могу перенести таблицу прерывания в область Бутлоадера, а после выхода из бутлоадера, я могу переключится на таблицу прерываний находящуюся в основной программе?