В любом случае необходимо глубокое владение тонкостями самого компилятора - в том же Си и ассемблерные вставки и файлы на ассемблере применяются. НО... там все же "свои правила", обусловленные ЯВУ. А для большинства прикладных применений с объёмом программы до 4/8 килобайт встроенного ПЗУ вполне и ассемблера хватает. Си требуется больше для "жирного интерактива" или солидных проектов автоматики. Вот там и "граница разумных затрат" для любителя проходит. Другое дело кому на проектах зароботок - работа в каких КБ или фирмах производящих - там уже иное отношение к изучению ЯВУ, обусловленное производством/научными исследованиями... Да и оснащение там "за счет работодателя". Не исключена также и редкая личная инициатива по глубокому изучению ЯВУ - но то уже редкость на сегодня.
Я так понимаю, что только на архитектуре х51 здесь мало кто сидит. Большинство, если не все, используют как минимум одну альтернативную архитектуру в своих проектах, а то и 2 - 3. В таких условиях с использованием Си проще портировать наработки между архитектурами. Конечно, периферия везде разная, но при использовании драйверов поставляемых производителем (я прежде всего имею в виду GPIO/I2C/SPI/UART), переход менее сложный по сравнению с вспоминанием тонкостей архитектуры или ассемблера. Вы, BOB51, пожалуй единственный здесь, кто держит в голове разные ассемблеры.
Второе - в Си нужнл делать запускающие Makefile с учетом всех входящих в состав проекта файлов...
Вредно читать фанатичных последователей *никсов. Они уходят, но заложенное ими семя о ручном труде продолжает жить. Зачем этот make делать? Он сам автоматически создается.
Оправдывать свою лень для самого себя можно (сам часто так делаю), но делать это публично с надуманными предлогами не стоит.
_________________ Каждый имеет право на свое личное ошибочное мнение.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Заголовок сообщения: Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Добавлено: Пт май 19, 2023 18:13:05
Друг Кота
Карма: 67
Рейтинг сообщений: 1013
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 18810 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
х51 — архаичная архитектура, ИМХО. Сейчас разные кортексы рулят.
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Данная тема выделена под MCS51. Эти МК продолжают выпускаться и применяться. А насчет "что удобнее применить" в конкретном случае - это уже вопросы несколько иного свойства - как выше уже говорилось - каждое семейство МК имеет свое применение.
Это не система команд, а математика в описании (препроцессора) компилятора... у С51ASM это раздел 3.5 Expressions. Только более приятным (чаще встречающимся) для побитовой инверсии было бы :
Препроцессор позволяет делать предварительные вычисления. Еще не такое попадается. Иногда очень удобно, но при чтении не самим автором - весьма "оглушает".
Снова возник вопросик - если какую-то чать флэша той же 89с2051 использовать под хранение констант/знакогенератора, вытаскивать оттуда данные командой MOVX A, @dptr?
Никаких movx при работе с ПЗУ! MOVX - это команды работы с внешним ОЗУ. Используется или
Код:
MOVC A,@A+PC ; относительно значения программного счетчика
или
Код:
MOVC A,@A+DPTR ; относительно значения в DPTR
Можно размещать в любом месте, кроме области используемых в программе таблиц векторов переходов по прерыванию (0х0000 - 0х002B если предполагается работа с аппаратными прерываниями). У AT89C2051/4051 вообще нет доступа к внешней памяти - хоть ОЗУ, хоть к ПЗУ данных (смотри даташиты!!!).
Никаких movx при работе с ПЗУ! MOVX - это команды работы с внешним ОЗУ.
Вот это меня и озадачивало, поэтому и спросил. Жаль, что старшие серии пока прошить не получается.
Конечно, А+DPTR - не слишком удобно, ну да ладно, посмотрим, что выйдет, особенно с аппаратным последовательным выводом.
BOB51 писал(а):
AT89C2051/4051 вообще нет доступа к внешней памяти - хоть ОЗУ, хоть к ПЗУ данных (смотри даташиты!!!).
Я бы столь категоричным не был, прямого доступа нет, косвенных методов - выше крыши. "Воткнул" же я 1.5кБ памяти в диапазон адресов 300-3FF у ВЕ39, чтобы вытаскивать данные знакогенератора командой MOVP3 A, @A, правда, это несколько другая песня.
... Я бы столь категоричным не был, прямого доступа нет, косвенных методов - выше крыши. "Воткнул" же я 1.5кБ памяти в диапазон адресов 300-3FF у ВЕ39, чтобы вытаскивать данные знакогенератора командой MOVP3 A, @A, правда, это несколько другая песня.
MCS48 и MCS51 это совсем разные семейства МК. И по начинке и по системе команд. Отсутствие аппаратного доступа (с помощью команд и линий строба) к внешнему ОЗУ "... External DATA memory access is not supported in this device, nor is external PROGRAM memory execution. Therefore, no MOVX [...] instructions should be included in the program. ..." не означает невозможности сделать это программно.
Вот я и сказал про косвенные методы, хоть террабайт памяти можно прицепить, но это будет сложный и не быстрый доступ. Ладно, команду я узнал, сейчас попробую переписать код для ве39 под 2051, должно шустро заработать.
Я ж уже ранее сказал - mcs48 (КМ1816ВЕ39 или импортные варианты) и mcs51 (AT89C2051) это весьма разные семейства МК. Легче заново код написать на основе алгоритма задачи, чем переделывать, тем более без детального ознакомления как с самим МК, так и с системой команд.
Сейчас этот форум просматривают: veso74 и гости: 15
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения