Возможно без знакомства с ассемблером освоить Си?

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15575
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Возможно без знакомства с ассемблером освоить Си?

Сообщение BOB51 »

МитяРа, я ж не про "стандартную мелкоту" .... мобильник - тоже вроде МК, да и другого "зверья" полно... досадка... ведь не только творчеством заниматься приходится...
скоро среднепакостные миниПК (или микроПК) расплодятся как нынешние микрухи - а там уже работа под управлением какой-нибудь очередной "форточки", которая меняется каждые 2-3 года!
стабильно тиражируются разве что "периферийные" ИС в качестве базовой ячейки для мелких приложений...
у PICов и AVRок вроде как тоже некоторая преемственность имеется, НО и те и другие только один производитель выпускает - не дай боже какой природный катаклизма или "поглощение/слияние" и ... :shock:
армы/кортексы пока в стадии "неопределенного роста" - там еще лет пять модели меняться будут - скорее всего в направлении "система на кристалле" - это уж точно под языки высокого уровня подгоняться будет (и "троянского коня" впридачу для потенциально проблемного потребителя впихнут в обязательном порядке)
грустно...
поползу лучше над концептом программулины к таймеру морочится - хош тоже "для себя" и "в стол" - но хоть мозги потренирую, да и ностальжи... :beer:
для hybroid
понятно, что у асма и С разный подход,
однако если асм освоен в полной мере - то там произойдет такой же переход сознания - работа с библиотеками, макросами и сложными конструкциями - дальше только найти "ключик" к освоению С (диалектов у которого не меньше, чем у асмов)
и все же в выигрыше будет тот, кто знает в совершенстве и асм и С и создание программ в ПК под "форточки" :beer:
Реклама
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Re: Возможно без знакомства с ассемблером освоить Си?

Сообщение Satyr »

BOB51 писал(а): армы/кортексы пока в стадии "неопределенного роста" - там еще лет пять модели меняться будут
:))) :)))

Это не этап "неопределенного роста", а нормальный цикл развития. Вот PIC и AVR - практически дохлые, а эти развиваются. И последние 15 лет "менялись" и дальше будут только "меняться" -)))
Реклама
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Возможно без знакомства с ассемблером освоить Си?

Сообщение ploop »

Мож кто сделает еще лучше руками на асме?
Без прелюдий:

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

    ; В R16 передаваемый байт
    ldi r17,8
    loop:
      cbi port,bit
      rol r16
      brcc l1                   
        sbi ds_port,ds_bit 
      l1:
      dec r17
      brne loop
Код для сдвигового регистра. Подразумевается, что должен быть импульс перед зацикливанием, поэтому cbi без условий.

Вариант 2:

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

    ldi r17,8
    loop:
      sbrc r16,(1<<0)
      cbi port,bit
      sbrs r16,(1<<0)
      sbi ds_port,ds_bit 
      rol r16
      dec r17
      brne loop
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

Re: Возможно без знакомства с ассемблером освоить Си?

Сообщение BCluster »

У Си диалектов нет, там есть стандарт. Отличаются только названия регистров у МК. Их инициализация и прочее. Сам язык один и тот же.
В некоторых компиляторах вводятся дополнительные фишки - типа PORTB.1 в CVAVR - но если ты не знаешь их ты можешь использовать стандартный подход.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Возможно без знакомства с ассемблером освоить Си?

Сообщение ploop »

дополнительные фишки
А они, случайно, не описаны теми же макросами, или еще чем-нибудь? К языку они вроде-бы отношения не имеют...
Реклама
phanis
Вымогатель припоя
Сообщения: 513
Зарегистрирован: Сб фев 19, 2011 18:04:08
Откуда: Татарстан, пос. Актюбинский
Контактная информация:

Re: Возможно без знакомства с ассемблером освоить Си?

Сообщение phanis »

Если не трудно, объясните пожалуйста как сделана битовая операция PORTB.1 в кодевижине.. В ИАР -е так

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

/*========*/
/* Predefined SFR Addresses */
/*========*/

/****************************************************************************
 * An example showing the SFR_B() macro call, 
 * the expanded result and usage of this result:
 *
 * SFR_B(AVR,   0x1F) Expands to:
 * __io union {
 *             unsigned char AVR;                 // The sfrb as 1 byte
 *             struct {                           // The sfrb as 8 bits
 *                     unsigned char AVR_Bit0:1,
 *                                   AVR_Bit1:1,
 *                                   AVR_Bit2:1,
 *                                   AVR_Bit3:1,
 *                                   AVR_Bit4:1,
 *                                   AVR_Bit5:1,
 *                                   AVR_Bit6:1,
 *                                   AVR_Bit7:1;
 *                    };
 *            } @ 0x1F;
 * Examples of how to use the expanded result:
 * AVR |= (1<<5);
 * or like this:
 * AVR_Bit5 = 1;
 ***************************************************************************/
Реклама
Аватара пользователя
Goodefine
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Re: Возможно без знакомства с ассемблером освоить Си?

Сообщение Goodefine »

ploop писал(а): Вариант 2:

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

    ldi r17,8
    loop:
      sbrc r16,(1<<0)
      cbi port,bit
      sbrs r16,(1<<0)
      sbi ds_port,ds_bit 
      rol r16
      dec r17
      brne loop
На асме я не пишу, потому могу ошибаться, т.к. устойчивых навыков нет, но этот код делает совсем не то что в примере. Если младший байт числа в r16, к примеру, равен 1, то sbrc не вызовет пропуск и выход установится в ноль следующей командой cbi. Далее, sbrs пропустит команду sbi (пропуск по 1) и выход останется в нуле. Затем произойдет сдвиг числа ВЛЕВО (rol), соответственно, с этого момента, младший бит будет всегда 0. Независимо от самого числа. Это приведет к тому, что в итоге сработает команда sbi и выход установится в 1 до конца цикла. Т.е. явно не то что требуется. Можно предположить что правильно сделать (1<<7), но выполняется тоже что то не того - с инверсией...
Вот так ближе к истине

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

 ldi r17,8
    loop:
      sbrc r16,(1<<7)
      sbi port,bit
      sbrs r16,(1<<7)
      cbi port,bit 
      rol r16
      dec r17
      brne loop
Растактовку не смотрел. В итоге большого выигрыша по сравнению с:

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

void transmit_byte(unsigned char const byte)
{
unsigned char  mask;
for (mask=0x80;mask;mask>>1) (byte&mask)? (PORTW|=(1<<BIT)):(PORTW&=~(1<<BIT));
  38:   80 78          andi   r24, 0x80   ; 128
  3a:   88 23          and   r24, r24
  3c:   11 f0          breq   .+4         ; 0x42 <__SREG__+0x3>
  3e:   91 9a          sbi   0x12, 1   ; 18
  40:   01 c0          rjmp   .+2         ; 0x44 <__SREG__+0x5>
  42:   91 98          cbi   0x12, 1   ; 18
  44:   92 b3          in   r25, 0x12   ; 18
  46:   f9 cf          rjmp   .-14        ; 0x3a <transmit_byte+0x2>

00000048 <main>:
}
я не вижу.
Первый вариант производит переключения не идентичные примеру (всегда через установку выхода в 0, возможно и растактовка при числе типа 10101010 будет разная) - т.е. временные диаграммы будут построены не по логике примера, соответственно сравнение не корректно. Если я не прав, поправьте...
Последний раз редактировалось Goodefine Пт янв 13, 2012 11:28:45, всего редактировалось 1 раз.
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
BerZerK-ku
Мучитель микросхем
Сообщения: 492
Зарегистрирован: Вт июл 22, 2008 08:10:54

Re: Возможно без знакомства с ассемблером освоить Си?

Сообщение BerZerK-ku »

Ога, асм это игра на внимательность :))
sbi и cbi поменять местами, а вместо rol поставить lsr. Вот тогда вроде как будет то что надо.
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: Возможно без знакомства с ассемблером освоить Си?

Сообщение ibiza11 »

по моему тема уже давно исчерпана, все ответы уже даны. Добавлю : лучше один раз увидеть, чем 100 раз услышать.
Ставим плюсы: )
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Возможно без знакомства с ассемблером освоить Си?

Сообщение ploop »

Да, конечно местами поменять. Сути это не меняет.
Аватара пользователя
Барсик
Друг Кота
Сообщения: 3459
Зарегистрирован: Ср сен 27, 2006 16:18:57

Re: Возможно без знакомства с ассемблером освоить Си?

Сообщение Барсик »

ATtiny13 писал(а):Возможно ли без знакомства с ассемблером освоить Си самостоятельно
Да. Я так и делал.

Делайте, как говорит Мастер Ломастер: http://radiokot.ru/forum/viewtopic.php? ... 1#p1104731 и всё у Вас получится.
ATtiny13
Встал на лапы
Сообщения: 110
Зарегистрирован: Пт окт 21, 2011 15:05:18

Re: Возможно без знакомства с ассемблером освоить Си?

Сообщение ATtiny13 »

Мастер Ломастер вам и
всем большое спасибо за хорошее объяснение моего вопроса я все понял :))
Теперь подскажите какую книгу купить для чтения в свободное время в печатном виде лучше читать :write:
понятие про логические элементы имею
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: Возможно без знакомства с ассемблером освоить Си?

Сообщение ibiza11 »

Здесь динамическая индикация на АСМ
А здесь динамическая индикация на Си
почитайте.
Ставим плюсы: )
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

Re: Возможно без знакомства с ассемблером освоить Си?

Сообщение BCluster »

http://www.helloworld.ru/texts/comp/lang/c/c6/index.htm напечатать и читать) Отличный труд имхо
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»