Ассемблер (ASM) для AVR в вопросах и ответах
Re: Ассемблер (ASM) для AVR в вопросах и ответах
как на ассемблере в AvrStudio сбросить биты в регистре? Аналогично Сишному выражению PORTB &=(~(1 << PB2)). Ну только для РОН. Справа от знака равно все прокатывает, остается еще умножить на эту маску. При использовании "&" компилятор ругается. Использовать промежуточный регистр, а затем команду AND?
- Реклама
- GP1
- Поставщик валерьянки для Кота
- Сообщения: 2401
- Зарегистрирован: Пт май 23, 2008 19:32:22
- Откуда: Россия, Волгоград
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
для сброса/установки бита РОН в асме есть спец команды
cbr/sbr
аналогично для РВВ
cbi/sbi
c - clear
s - set
cbr/sbr
аналогично для РВВ
cbi/sbi
c - clear
s - set
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Вообще, их проще запоминать как сокращения:
SBI Set Bit in I/O Register
CBI Clear Bit in I/O Register
SBR Set Bit in Register
CBR Clear Bit in Register
SBI Set Bit in I/O Register
CBI Clear Bit in I/O Register
SBR Set Bit in Register
CBR Clear Bit in Register
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Гы-гы-гы. НаСИльник, не знающий АСМа 
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Ассемблер (ASM) для AVR в вопросах и ответах
CBI/SBI для одного бита. А если я хочу сказать компилятору, чтобы сбросил сразу несколько указанных битов? Например, в даташите, для установки нескольких битов используется запись
Как сбросить?
Код: Выделить всё
LDI R16, (1<<PB2)|(1<<PB1)|(1<<PB0)
OUT PORTB, R16
- Реклама
- GP1
- Поставщик валерьянки для Кота
- Сообщения: 2401
- Зарегистрирован: Пт май 23, 2008 19:32:22
- Откуда: Россия, Волгоград
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
аналогично, только в нужные разряды вместо 1 прописываешь 0
если делать кошерно, то
- читаем порт
- выключаем ненужные разряды
- пишем обратно в порт
тогда точно меняются только нужные разряды.
если делать кошерно, то
- читаем порт
- выключаем ненужные разряды
- пишем обратно в порт
тогда точно меняются только нужные разряды.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Может проще сразу 0F8h написать..sergy1976 писал(а):(1<<PB2)|(1<<PB1)|(1<<PB0)
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Неудобно, особенно если биты именованы, например:Может проще сразу 0F8h написать..
Код: Выделить всё
ldi r16,(1<<TXEN)|(1<<RXEN)|(1<<RXCIE)
out UCSRB,r16 Если кошерно:Как сбросить?
Код: Выделить всё
IN R16,PINB
ANDI R16, ~(1<<PB2)|(1<<PB1)|(1<<PB0)
OUT PORTB, R16Re: Ассемблер (ASM) для AVR в вопросах и ответах
SBR то же ORI
CBR то же ANDI
CBR то же ANDI
- GP1
- Поставщик валерьянки для Кота
- Сообщения: 2401
- Зарегистрирован: Пт май 23, 2008 19:32:22
- Откуда: Россия, Волгоград
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
интересная мысльBVS писал(а):SBR то же ORI
CBR то же ANDI
т.е. бит и байт это одно и тоже
- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Наверно имеется ввиду то, что эти пары команд транслируются в один и тот же код (синонимы).GP1 писал(а):интересная мысльBVS писал(а):SBR то же ORI
CBR то же ANDI
т.е. бит и байт это одно и тоже
Re: Ассемблер (ASM) для AVR в вопросах и ответах
вы sbr с sbi перепутали, а sbr и ori для процесора одна команда тоже и с cbr-andi
Re: Ассемблер (ASM) для AVR в вопросах и ответах
130 команд - миф
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Именно так. И cbr и инвертированный andi соответственноBVS писал(а):вы sbr с sbi перепутали, а sbr и ori для процесора одна команда тоже и с cbr-andi
Обратите внимание на коды каманд:
Код: Выделить всё
154: 00002B 6800 ori r16, 128
155: 00002C 6800 sbr r16, 128
156:
157: 00002D 770F andi r16, ~128
158: 00002E 770F cbr r16, 128
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Atmega8. Прерывание INT0. Подскажите, что записать в регистры GICR и MCUCR чтобы получить прерывание INT0 по нарастанию сигнала? Спасибо!
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Ассемблер (ASM) для AVR в вопросах и ответах
А что в даташите пишут?lag1 писал(а):Atmega8. Прерывание INT0. Подскажите, что записать в регистры GICR и MCUCR чтобы получить прерывание INT0 по нарастанию сигнала?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- GP1
- Поставщик валерьянки для Кота
- Сообщения: 2401
- Зарегистрирован: Пт май 23, 2008 19:32:22
- Откуда: Россия, Волгоград
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Читать ДШGudd-Head писал(а): А что в даташите пишут?
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Ёпт, действительно! Когда есть столько народу готового помочь.GP1 писал(а):Читать ДШ, это ж моск напрягать надо...
Это как часы — зачем их покупать и носить, когда на улице есть столько идиотов, с радостью готовых сказать который час.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Что ж вы сразу издеваться, может у человека с английским плохо
lag1, смотрите таблицу 31 на стр. 66 - последняя строка (там про биты MCUCR), сразу под ней описание GICR.



