РЕШЕНО Запретить движение в одну сторону

Тема в разделе "Arduino & Shields", создана пользователем dmb, 27 дек 2021.

  1. a1000

    a1000 Гуру

    Вот как раз и можно. В одном байте помещается 8 битовых переменных. Один регистр - 8 булевых переменных. Инструкциями SBRC и SBRS организовуется ветвление в зависимости от состояния конкретного бита. А с помощью инструкций SBR и СBR можно изменить состояние конкретного бита в регистре не заморачиваясь с битовыми масками. Тут ASM гибче.
    Но в других ситуациях выигрывает Си. Идеала нет. Каждый вибирает то, что ему больше нравится.
     
  2. SergeiL

    SergeiL Оракул Модератор

    И можно присвоить имя конкретному биту?
    И обратиться по имени к конкретному биту?
    На счет 8 битовых переменных в одном байте, и макроса с проверкой, установкой и сбросом конкретного бита через логические операции - это понятно, но это и в Си также.
     
  3. Asper Daffy

    Asper Daffy Иксперд

    Работал с "Байкал-Т". Там команда NOP четыре байта занимает :)

    (как впрочем, и у всех процессоров на этом ядре)
     
  4. a1000

    a1000 Гуру

    Прям один в один как в Си нет. Но есть директивы EQU и DEF. С помощью них можно очень сильно к этому приблизиться.
    В ASM это не макросы а процессорные инструкции. SBR или СBR, к примеру, выполняются за один такт.
    Но опять повторюсь, ни что не идеально. За простоту в одном приходится платить повышенной сложностью в другом.
     
  5. parovoZZ

    parovoZZ Гуру

    у вас с памятью проблемы? К чему вся эта программерная мастурбация???
     
  6. SergeiL

    SergeiL Оракул Модератор

    Улыбаюсь :),
    Си, АСМ, контроллер то один, и инструкции те же.
    И те же "SBR или СBR" есть и в АСМе и в Си.
    На Си - не хочешь париться - пишешь на Си, думаю будут те же "SBR или СBR".
    Хочешь - паришься и пишешь на АСМе, и получаешь то-же самое, что и на АСМе. :)
     
  7. Airbus

    Airbus Радиохулиган Модератор

    Дак а что всеж лучше? На чем кодить? Давайте разберемся!
     
    issaom нравится это.
  8. SergeiL

    SergeiL Оракул Модератор

    Смотря какая цель.
    Если цель - сделать работающее устройство - кодить на том, что лучше знаешь!
    Получится быстрее код написать и устройство будет менее глючное.
     
    issaom нравится это.
  9. issaom

    issaom Гуру

    Вопрос риторический. Кодить на чем-либо зло! - нужно покупать на "Алишечке" готовое.
     
    Feofan и Airbus нравится это.
  10. SergeiL

    SergeiL Оракул Модератор

    Если есть готовое и стоит не безумных денег, - согласен - нужно покупать. Так и делаю.
    А вот если не купить готовое, приходится делать самому.
    Благо сейчас сделать можно практически все, что только только можно придумать, ну естественно, в разумных пределах :)
     
    DetSimen и Airbus нравится это.
  11. Airbus

    Airbus Радиохулиган Модератор

    Ну так Асм or Си? Что кошернее? На чем делать Дрыгоножество?
    Дык я о томже!
     
  12. Airbus

    Airbus Радиохулиган Модератор

    Удобство Си в наличии множества библиотек. В Асме их (подпрограммы работы с железом) надо писать самому. Для этого надо досконально знать железо. Ну и наличие библиотек ускоряет написание самого кода наСи.
     
    SergeiL нравится это.
  13. SergeiL

    SergeiL Оракул Модератор

    Тут у каждого свое личное мнение. :)
    Я пишу на Си, так как это быстрее, понятнее и меньше делаешь ошибок. ИМХО.
    Прелесть Си, что можно написать все на Си, использовать наработки в виде доступных библиотек,
    а критичные, к количеству тактов куски кода, написать на АСМ-е, используя ассемблерные вставки или отдельные функции-подпрограммы на ассемблере.
    Так всегда и делалось.
     
  14. Airbus

    Airbus Радиохулиган Модератор

    Раньше простые дрыги писал на асме. Так как мне казалось что это быстрее. Дергаешь ноги sbi/cbi и вроде все просто. Но с задержками работать не очень нравилось. Так казалось что асм наше все. Пока не появилось Didital write/read. Ну а когда вкусил Analog write/read то забыл про асм. Да и к «настоящему» Си обращаюсь редко. Гудронных коллайдеров как ParovoZZ я не делаю а для остального Меги8—328 хватает. Это как летать на ATR42 после Ан24. Один умный и современный но с норовом. А второй простой и деревянный. Но послушный рукам. Если они не из опы
     
  15. SergeiL

    SergeiL Оракул Модератор

    Я под АВР на АСМ не писал, когда я с ним столкнулся - уже нормальный Си был.
    А вот под 8051- пришлось начинать на АСМе, потом нашел Си, и я сразу забыл про АСМ в чистом виде.
    Вставок на АСМе всегда хватало.
    До этого я только под x86 на АСМе немного писал, но в основном все на Си.
     
    DetSimen нравится это.
  16. parovoZZ

    parovoZZ Гуру

    IP стек или BLE осилишь на асме?
     
  17. Airbus

    Airbus Радиохулиган Модератор

    Зачем?
     
  18. parovoZZ

    parovoZZ Гуру

    Как зачем? Чтобы сделать что-то крутое на асме.
     
  19. a1000

    a1000 Гуру

    Господа! Я не ставил задачу убедить кого либо, что ASM лучше всего. Там полно всяких своих подводных камней. Одна математика чего стоит. Все языки более высокого уровня и создавались для того, что-бы облегчить жизнь. Но ничего даром не даётся, за всё надо платить. Глядя на Си из под ASM понимаешь, на какие, порой, извращения пришлось пойти создателям языка. С кем поделиться наблюдениями? Вокруг меня нет людей которые в теме. Вот пишу здесь. Повторюсь - ни кого не агитирую бросить тот-же Си.
    Arduino то-же отличная, для своих целей, среда. Для старта самое оно. Глянув уроки Jeremy Blum я был поражён простотой процесса. Если-бы на старте вместо простого analogRead нужно было разбираться в регистрах и битах АЦП я бы просто плюнул на всё это. А готовые библиотеки практически под все модули, это просто сказка для начинающих. Правда в библиотеках тоже полно подводных камней и иногда сопоставив алгоритмы двух библиотек, применяемых в одном скетче, диву даёшься полученному результату.
    На счёт
    позволю себе не согласиться. Можно писать по принципу - какая разница что внутри, главное работает. Но может вернуться бумерангом. Решил недавно использовать свой ранее написанный код как основу для нового. Из-за кучи костылей, которые ранее наставил по принципу ну оно-же заработало, столкнулся с большими трудностями. Пришлось править на много больше чем расчитывал. Лично я считаю, что надо сразу приучаться писать правильно. Потом легче будет.
    В заключении хочу поздравить всех участников форума с Новым Годом, пожелать всем здоровья, удачи и творческих успехов. Пусть на форуме царит мир и взаимопонимание.
     
  20. Airbus

    Airbus Радиохулиган Модератор

    Да этож я пошутил. Вы совершенно правы. А шел от асма к Ардуино. Как наверное и Вы. Но вот в обратном направлении не пошел бы никогда. Мощности и ресурсов современных МК вполне хватает и нет смысла ужимать код. А удобство написание кода и абстрагирование от железа расслабляет. Максимум что хочется сделать ручками подправить библиотеку.