|
Ассемблер AVR |
|
|
|
Jul 11 2012, 19:55
|
Группа: Новичок
Сообщений: 2
Регистрация: 11-07-12
Пользователь №: 72 725

|
Не взыщите но глупых вопросов не бывает. Как на ассемблере расшифровать две следующие записи (точне значки << |). 1. 1<<USIOIF 2.( 1<<USIOIF)|( 1<<USICS1) Заранее спасибо.
|
|
|
|
|
 |
Ответов
|
Jul 11 2012, 20:33
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(Xenia @ Jul 11 2012, 23:22)  Это не ассемблер, а C Нет, вы не правы: это вполне может быть ассембером. IAR AVR ассемблер вполне поймет такое например: Код andi R16, (1<<2) | (1<<7) также как и #if, #define и тд по списку.
|
|
|
|
|
Jul 12 2012, 00:30
|
Местный
  
Группа: Участник
Сообщений: 406
Регистрация: 22-05-11
Из: Москва
Пользователь №: 65 195

|
Как раз сейчас осваиваю не спеша ассемблер AVR. Начитавшись умных и глупых книжек, скажу:
Такое широко используется в ассемблере AVR (в частности, в AVR Studio), чтобы установить нужные биты в разных служебных регистрах. А это всегда требуется при инициализации МК или изменении каких-то режимов (включении-выключении прерываний, интерфейсов и пр.) Поскольку точное положение управляющего бита в служебном регистре не запомнить, да еще в разных МК AVR они могут быть в разных местах, то так и делают, например операция (1<<USIOIF)|(1<<USICS1) дает байт с единицами на месте битов USIOF и USICS1, а остальные нули. Осталось записать этот байт в нужный служебный регистр, ну или сделать операцию ИЛИ, если остальные биты трогать не надо.
Теоретически это улучшает читаемость и (что важно) переносимость программы, поэтому активно рекомендуется так делать.
Разумеется, нужно включить командой .INCLUDE файл, соответствующий данному МК (например "M32DEF.INC"), в котором, как уже писали, этим константам соответствуют некоторые числа. Иначе работать не будет.
|
|
|
|
|
Jul 12 2012, 05:58
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
QUOTE (SmarTrunk @ Jul 12 2012, 03:30)  Теоретически это улучшает читаемость ... программы, поэтому активно рекомендуется так делать. А вы попробуйте написать один проект используя только записи вида CODE UCSR0B = 0x98 вместо CODE UCSR0B = (1<<RXCIE0)|(0<<TXCIE0)|(0<<UDRIE0)|(1<<RXEN0)|(1<<TXEN0)|(0<<UCSZ02); Я даже не говорю о том, чтобы что-то исправить в этом проекте через неделю - просто дописать его до конца и отладить. Думаю, вы очень быстро поймете, что такая запись улучшает читаемость не теоретически, а практически.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
Сообщений в этой теме
vvvalarm Ассемблер AVR Jul 11 2012, 19:55 ILYAUL Вот Jul 11 2012, 20:22 ILYAUL Цитата(Xenia @ Jul 12 2012, 00:22) Это не... Jul 11 2012, 20:27   _Артём_ Цитата(Xenia @ Jul 11 2012, 23:42) Ясное ... Jul 11 2012, 21:54     vvvalarm Цитата(SmarTrunk @ Jul 12 2012, 03:30) Ка... Jul 13 2012, 17:02 _Артём_ Цитата(vvvalarm @ Jul 11 2012, 22:55) Не ... Jul 11 2012, 20:23 ILYAUL Мне больше "нравится" когда написано так... Jul 12 2012, 06:44 Сергей Борщ QUOTE (ILYAUL @ Jul 12 2012, 09:44) Мне б... Jul 12 2012, 08:17  Tiro Цитата(Сергей Борщ @ Jul 12 2012, 11:17) ... Jul 12 2012, 20:41   Сергей Борщ QUOTE (Tiro @ Jul 12 2012, 23:41) А почем... Jul 12 2012, 21:56    Tiro Цитата(Сергей Борщ @ Jul 13 2012, 00:56) ... Jul 12 2012, 22:03    ReAl Цитата(Сергей Борщ @ Jul 13 2012, 00:56) ... Jul 13 2012, 04:02     Сергей Борщ QUOTE (ReAl @ Jul 13 2012, 07:02) операто... Jul 13 2012, 06:31     Xenia Цитата(ReAl @ Jul 13 2012, 08:02) Скорее,... Jul 13 2012, 07:57      Сергей Борщ QUOTE (Xenia @ Jul 13 2012, 10:57) уперся... Jul 13 2012, 08:24       ReAl Цитата(Сергей Борщ @ Jul 13 2012, 09:31) ... Jul 14 2012, 10:31      XVR Цитата(Xenia @ Jul 13 2012, 11:57) а MS V... Jul 13 2012, 08:45       Xenia Цитата(XVR @ Jul 13 2012, 12:45) А для пр... Jul 13 2012, 10:14        XVR Цитата(Xenia @ Jul 13 2012, 14:14) Не виж... Jul 13 2012, 10:56       demiurg_spb да именно статк асерт здесь рулит.
to Xenia: кон... Jul 13 2012, 10:16        Xenia Цитата(demiurg_spb @ Jul 13 2012, 14:16) ... Jul 13 2012, 11:07         demiurg_spb Цитата(Xenia @ Jul 13 2012, 15:07) Зато в... Jul 13 2012, 11:45 Xenia Цитата(ILYAUL @ Jul 12 2012, 10:44) Мне б... Jul 12 2012, 11:16  _Артём_ Цитата(Xenia @ Jul 12 2012, 14:16) В тех ... Jul 12 2012, 12:38  kolobok0 Цитата(Xenia @ Jul 12 2012, 15:16) ...это... Jul 12 2012, 12:47   Xenia Цитата(kolobok0 @ Jul 12 2012, 16:47) дол... Jul 12 2012, 14:06    ae_ Цитата(Xenia @ Jul 12 2012, 23:06) ...обр... Jul 12 2012, 15:27     Xenia Цитата(ae_ @ Jul 12 2012, 19:27) .equ MAS... Jul 12 2012, 16:00      SSerge Цитата(Xenia @ Jul 12 2012, 23:00) Ух ты... Jul 12 2012, 17:18       Xenia Цитата(SSerge @ Jul 12 2012, 21:18) Это т... Jul 12 2012, 17:26  _Pasha Цитата(Xenia @ Jul 12 2012, 14:16) В тех ... Jul 13 2012, 00:26   ae_ Цитата(_Pasha @ Jul 13 2012, 09:26) #defi... Jul 13 2012, 03:11 ILYAUL Так слово нравится я написал в ковычках - т.е как... Jul 12 2012, 09:27 ILYAUL Ну вот, и поговорили за asm Jul 14 2012, 22:21 ReAl — Привет, Пух!
— Привет, Пятачок!
— Хороша... Jul 15 2012, 05:18 uni Как я улучшаю читаемость при установке битов в кон... Jul 26 2012, 00:39 ILYAUL Вернёмся к asm. Тут вот , через эное количество ле... Aug 6 2012, 17:43 _Артём_ Цитата(ILYAUL @ Aug 6 2012, 20:43) что ме... Aug 6 2012, 18:33 ILYAUL Про него, родимого. Явных адресов подпрограмм Вы т... Aug 6 2012, 19:30 _Артём_ Цитата(ILYAUL @ Aug 6 2012, 22:30) Но пер... Aug 6 2012, 20:13 ILYAUL Нет . Артём , я Вам в личку отвечу подробно. Я по... Aug 6 2012, 20:32 kolobok0 Цитата(ILYAUL @ Aug 7 2012, 00:32) ...мож... Aug 7 2012, 06:22  demiurg_spb Цитата(kolobok0 @ Aug 7 2012, 10:22) для ... Aug 7 2012, 06:25   kolobok0 Цитата(demiurg_spb @ Aug 7 2012, 10:25) .... Aug 7 2012, 07:07 ILYAUL Цитатаидёт речь об адресах, которые могут хранитьс... Aug 7 2012, 08:41 kolobok0 Цитата(ILYAUL @ Aug 7 2012, 12:41) ...Вы ... Aug 7 2012, 11:38 ILYAUL 1. Я не храню там адреса переходов , я использую а... Aug 7 2012, 12:42 kolobok0 Цитата(ILYAUL @ Aug 7 2012, 16:42) ...2. ... Aug 7 2012, 13:43 ILYAUL Спасибо , за пояснения.
ЦитатаОтсюда я и спрашивал... Aug 7 2012, 15:34
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|