Ассемблер (ASM) для AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
sergy1976
Родился
Сообщения: 8
Зарегистрирован: Пт июл 09, 2010 10:55:13

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение sergy1976 »

как на ассемблере в AvrStudio сбросить биты в регистре? Аналогично Сишному выражению PORTB &=(~(1 << PB2)). Ну только для РОН. Справа от знака равно все прокатывает, остается еще умножить на эту маску. При использовании "&" компилятор ругается. Использовать промежуточный регистр, а затем команду AND?
Реклама
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение GP1 »

для сброса/установки бита РОН в асме есть спец команды
cbr/sbr
аналогично для РВВ
cbi/sbi
c - clear
s - set
Чем дальше, тем больше становлюсь занудой...
Изображение
Реклама
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение ploop »

Вообще, их проще запоминать как сокращения:
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 в вопросах и ответах

Сообщение Gudd-Head »

Гы-гы-гы. НаСИльник, не знающий АСМа :)
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Реклама
Эиком - электронные компоненты и радиодетали
sergy1976
Родился
Сообщения: 8
Зарегистрирован: Пт июл 09, 2010 10:55:13

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение sergy1976 »

CBI/SBI для одного бита. А если я хочу сказать компилятору, чтобы сбросил сразу несколько указанных битов? Например, в даташите, для установки нескольких битов используется запись

Код: Выделить всё

LDI R16, (1<<PB2)|(1<<PB1)|(1<<PB0)
OUT PORTB, R16
Как сбросить?
Реклама
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение GP1 »

аналогично, только в нужные разряды вместо 1 прописываешь 0
если делать кошерно, то
- читаем порт
- выключаем ненужные разряды
- пишем обратно в порт
тогда точно меняются только нужные разряды.
Чем дальше, тем больше становлюсь занудой...
Изображение
Реклама
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение МитяРа »

sergy1976 писал(а):(1<<PB2)|(1<<PB1)|(1<<PB0)
Может проще сразу 0F8h написать..
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение ploop »

Может проще сразу 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, R16
BVS
Потрогал лапой паяльник
Сообщения: 336
Зарегистрирован: Пн май 23, 2011 18:27:41

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение BVS »

SBR то же ORI
CBR то же ANDI
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение GP1 »

BVS писал(а):SBR то же ORI
CBR то же ANDI
интересная мысль
т.е. бит и байт это одно и тоже :wink:
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение Engineer_Keen »

GP1 писал(а):
BVS писал(а):SBR то же ORI
CBR то же ANDI
интересная мысль
т.е. бит и байт это одно и тоже :wink:
Наверно имеется ввиду то, что эти пары команд транслируются в один и тот же код (синонимы).
BVS
Потрогал лапой паяльник
Сообщения: 336
Зарегистрирован: Пн май 23, 2011 18:27:41

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение BVS »

вы sbr с sbi перепутали, а sbr и ori для процесора одна команда тоже и с cbr-andi
BVS
Потрогал лапой паяльник
Сообщения: 336
Зарегистрирован: Пн май 23, 2011 18:27:41

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение BVS »

130 команд - миф
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение ploop »

BVS писал(а):вы sbr с sbi перепутали, а sbr и ori для процесора одна команда тоже и с cbr-andi
Именно так. И 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
   
Собственно, даташит этого и не скрывает.
lag1
Первый раз сказал Мяу!
Сообщения: 26
Зарегистрирован: Пн июн 09, 2008 23:40:31

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение lag1 »

Atmega8. Прерывание INT0. Подскажите, что записать в регистры GICR и MCUCR чтобы получить прерывание INT0 по нарастанию сигнала? Спасибо!
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение Gudd-Head »

lag1 писал(а):Atmega8. Прерывание INT0. Подскажите, что записать в регистры GICR и MCUCR чтобы получить прерывание INT0 по нарастанию сигнала?
А что в даташите пишут?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение GP1 »

Gudd-Head писал(а): А что в даташите пишут?
Читать ДШ :shock: , это ж моск напрягать надо...
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение Gudd-Head »

GP1 писал(а):Читать ДШ :shock: , это ж моск напрягать надо...
Ёпт, действительно! Когда есть столько народу готового помочь.
Это как часы — зачем их покупать и носить, когда на улице есть столько идиотов, с радостью готовых сказать который час.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение Engineer_Keen »

Что ж вы сразу издеваться, может у человека с английским плохо :))) lag1, смотрите таблицу 31 на стр. 66 - последняя строка (там про биты MCUCR), сразу под ней описание GICR.
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение pyzhman »

GICR= 0x40 MCUCR= 0x03
Docendo discimus
Ответить

Вернуться в «AVR»