По "старым правилам" работа с ВПД/ВПП допускается на половине от максимальной частоты для работ с внутренним ПЗУ кристалла. Это за исключением тех, что только с внешней памятью работали. В КОТУИНКЕ стоит ВПД/ВПП при тактовой 11,0592 МГц только для удобства работы с UART. Сама же базовая ИС МК расчитана для работы при 24 МГц. Учитывая, какая там разводка - вполне приличный результат получился. Правда ОЗУ от кэш-памяти старого ПК (их до... ставилось на 386/486 материнках).
По поводу КР537РУ10... В старых конструкциях с РУшками частоту выше 6 Мгц (0,000002S/одноцикловая команда) не поднимал... Это при заявленной максимальной частоте МК (на те времена) в 12 МГц.
Почитал даташитку... Ничего крамольного... А просмотрев старые прожки ... не так часто я вторым DPTR пользуюсь (больше для совместимости программ)... Второе замечание... mov dptr,#d16 довольно редко используется по причине загрузки абсолютного адреса (для статических массивов или фиксированных заранее определенных в исходнике точек переходов). В то же время в программах более интересна/эффективна загрузка динамически изменяемого адреса. Воть посему чаще использую или передачу через стек или загрузку из регистров. т.е. mov DPL,Rn mov DPH,Rm или их модификации. А там всегда прямое указание на РСФ. Посему про mov dptr,#d16 мал подзабылось...
В результате дискуссии с коллегой, понадобилось мне переделать мой давний проект безпроводного погодного датчика с EFM32 под EFM8SB1 архитектуры 8051. Ранее много программировал силлабовские c8051, но с тех пор прошло много лет и всё забылось. Сейчас смотрю на свои старые проекты и вспоминаю как разбирался с периферией силлабовской серии с8051, но многие вещи как первый раз читаю. Кроме того, инструменты, которыми пользовался ранее (Configuration Wizard 2 и Silicon Labs IDE) уже давно не апдейтились и не поддерживают новых серий EFM8 той-же фирмы.
Однако, нет худа без добра, поскольку всё силлабовское поддерживается в Simplicity Studio. В общем, позаимствовал с примеров в студио драйверы фирмы под интерфейсы I2C и SPI, а также конфигурирование переходов в глубокий сон с пробуждением от SmaRTClock. Потратил на это 3 дня с длинными перерывами, в общем, было даже интересно. Распаял на монтажку МК (EFM8SB10F8GA на оранжевой безпайке справа) на своём стенде разработки безпроводки, где также имеется радио SI4061 и сенсор. Студио, конечно, ускоряет разработку после того, как разберёшся как работать с её конфигураторами периферии (как всегда логика пользователя не всегда совпадает с логикой ПО разработки). Короче, рекомендую этот инструмент любителям с8051, если что смогу помочь. Он, правда, поддерживает только силлабовские 8051, но я считаю, что если сегодня эту архитектуру и использовать и есть выбор, то силлабовские 8051 в своём классе архитектуры лучшие. Вот несколько скриншотов конфигуратора ресурсов и фотка стенда (кликабельно):
Провода слева идут к лог. анализатору, которые для тестов на микропотребление следует отключить. В результате в паузах, когда МК, радио и сенсор засыпают, токопотребление всей системы менее 0.5мкА, что даже лучше, чем у EFM32, да и обвязки у EFM8 меньше.
Заголовок сообщения: Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Добавлено: Вс май 16, 2021 17:41:42
Родился
Зарегистрирован: Пт май 14, 2021 18:07:56 Сообщений: 2
Рейтинг сообщения:0
Здравствуйте!
Только начал изучать ASM-51, помогите пожалуйста кому не сложно.
Необходимо написать программу на языке ASM-51.
Задание:
На светодиодах, подключенных к порту Р2 микроконтроллера МК51, получить световой эффект бегущего огонька со сменой направления. Скорость эффекта должна регулироваться тумблерами порта ввода Р1.
Для начала рисуем схему, оговариваем каким компилятором пользуемся (от keil, атмелевский c51asm или чего другого) и объявляем чего хотим - готовую прожку или подсказку.
Для тестов порт Р2 лучше не использовать - работаем с Р1 и с частью Р3, обеспечивая совместимость с более "урезанными" прикладными МК данного семейства (АТ89С2051, АТ89С4051 к примеру) и возможность использования МК с исключительно внешним ПЗУ).
Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650.
Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
... обеспечивая совместимость с более "урезанными" прикладными МК данного семейства (АТ89С2051, АТ89С4051 к примеру) и возможность использования МК с исключительно внешним ПЗУ).
Вот зачем такое ископаемое рекомендовать к изучению, когда на рынке полно современных МК на 51-м ядре?
_________________ Каждый имеет право на свое личное ошибочное мнение.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Рекомендован компилятор из того, что есть и бесплатно.
Альтернатива или KEIL (весьма кусюч и враждебного происхождения) или атмелевский С51asm (не предусматривает официальной возможности многофайловиков - разве что вариант моего "слэнга" - но то ведь "любительские развлечения" )... Есть еще AD2500 - но то уж совсем старое-DOSовское изделие... Да и под современное разнообразие МК нужно оперативно подстраиваться делать подключаемые файлы с новыми ресурсами самостоятельно...
Касательно разновидностей МК (которых "полно" в ближнем шаговом окружении и не более 200 рублей за штуку ) - это определяется принадлежностью региона к конкретным торговым путям. MCS51 не во всех регионах одинаково распространены, поштучно ессно не привозятся а массовые закупки - удел хотя-бы мелкосерийки, но не любителя. Названы самые распространенные варианты за последние годы для практически любого региона.
Рекомендован компилятор из того, что есть и бесплатно
Давно уже есть SDCC бесплатный - можно на Си и ассемблере для C51 кодить, да еще с т.н. "многофайловиками". И SDCC поддерживает еще кучу микроконтроллеров (когда то и авр в списке были). Сделал несколько проектов на SDCC для С51 Нувотонов - полет нормальный. Насчет ""полно" в ближнем шаговом окружении и не более 200 рублей за штуку" - на алике полно современных китайских плат, на современных китайских C51 микроконтроллерах типа, STC15 https://aliexpress.ru/item/1005001580411236.html можно заказать не выходя из дома к т.н. "ближнему шаговому окружению". Или заказать у местных барыг, которые все с алика возят. Микроконтроллеры чисто тоже можно купить. Да и на базарных лотках полно конструкторов часов на STC15 - самое то для обучения. Для прошивки достаточно простого юсб хвостика. http://microsin.net/programming/msc51/d ... 404as.html
Кстати... тут больше вопрос про "ходовые порты" был... Это для mcs51 уже как стандарт - сначала порты Р3 и Р1 выводить, а уже при большем количестве лапок добавлять Р2 и Р0 (и далее, если лапок в достатке). Даже у тех же STC в "малолапом" формате сначала используют Р1 и Р3, а уже по увеличении количества лапок добавляют другие порты.
Касательно SDCC - там ассемблер (как и в любом Си компиляторе) "в рамках Си", а не в самостоятельном варианте. Хотя сам компилятор из наиболее удачных.
Нету такого стандарта - "mcs51 уже как стандарт - сначала порты Р3 и Р1 выводить", в современных С51 порты - это кого надо порты, там и подтяжки и опедрайны и т.д., но можно как встарь квази. В SDCC ассемблер независимый см. например на русском для стм8 пункт 2. Создание проекта Blink на ассемблере SDCC http://www.count-zero.ru/2018/stm8_assembler/#2 При компиляции никакого Си - чисто ассемблер и линкер:
Код:
$ make all sdasstm8 -plosgffw main.s sdldstm8 -f ld.lk -i blink.ihx main.rel ASlink >> -f ld.lk ASlink >> -muwx ASlink >> -Y ASlink >> -b HOME = 0x8000 ASlink >> ASlink >> -i ASlink >> blink.ihx ASlink >> main.rel stm8-size blink.ihx text data bss dec hex filename 0 168 0 168 a8 blink.ihx
Я че-то сомневаюсь. Не знаю, может чего не так сделал... Написал я значит простейшую мигалку на С, компилировал ее SDCC, и получил целый килобайт! Дизассемблировал то что получилось, и чуть не поседел... А вот Keil скомпилировал так, что сам лучше не напишешь.
как быть, когда ассемблер не поддерживает вычисление адреса метки, например, нельзя сделать mov DPTR, #string ? Не хочется лезть в листинг, чтоб смотреть абсолютный адрес этой string
Всегда поддерживает (если метка заранее определена в проекте и это один и тот же проект)... Другое дело, в какой области памяти и какая модель МК указана. По умолчанию активны ВПД, ВПП и РПД/РСФ. Но... если указан кристалл (АТ89С к примеру) то в *.inc файле есть строчки отключения ВПД и излишней ВПП. Для котуинки я специально изменял тот стандартный *.inc файлик, чтоб и программа и данные могли в ВПП/ВПД размещаться и особенности AT89S52 сохранились. В основном файле проекта вместо обычного
Код:
$include (baseinc\at89s52.inc) $include (baseinc\89s52.inc) ; общий для AT98C52 фрагмент
добавляется
Код:
$include (baseinc\kotuinko.inc)
тогда резервирование памяти может быть в любом доступном месте в пределах 64 килобайт (модель "по умолчанию" для c51asm.exe с добавкой описания AT89S52). собственно тот kotuinko.inc
Для другого компилятора - смотрим соответствующую документацию. А вот "вручную" придется ставить только если используются адреса из другого проекта - к примеру, когда в конструкции два МК с собственными программами (тот же программатор для АТ89С5х котуинки https://radiokot.ru/forum/viewtopic.php ... 6#p4071976 где собственно сама котуинка как управляющий модуль и накопитель и "жгучая платка" с собственным АТ89С51) - но там также вопрос весьма просто решается - вводим считанные с листинга значения константными дефайнами.
Можно вопрос по KEIL? Почему пошаговая отладка работает только с основным файлом проекта, а в подключенные не заходит? Как только дошагиваешь до перехода на кусок кода, который в подключенном файле, симуляция работает сама по себе, как будто нажал run, видно как меняется содержимое регистров и памяти, а если остановить, указатель на текущую команду ставится на произвольный адрес в основном исходнике. И точки останова в подключенных файлах не ставятся, хотя если поставить мышку на метку или переменную, то их реальные значения в подсказке всплывают. Такое впечатление что при компиляции не генерируется какая-то часть отладочной информации, но нигде в настройках я ничего так и не смог найти Пишу на ассемблере.
_________________ Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
Давно уже есть SDCC бесплатный - можно на Си и ассемблере для C51 кодить, да еще с т.н. "многофайловиками". И SDCC поддерживает еще кучу микроконтроллеров (когда то и авр в списке были). Сделал несколько проектов на SDCC для С51 Нувотонов - полет нормальный. Насчет ""полно" в ближнем шаговом окружении и не более 200 рублей за штуку" - на алике полно современных китайских плат, на современных китайских C51 микроконтроллерах типа, STC15 https://aliexpress.ru/item/1005001580411236.html можно заказать не выходя из дома к т.н. "ближнему шаговому окружению". Или заказать у местных барыг, которые все с алика возят. Микроконтроллеры чисто тоже можно купить. Да и на базарных лотках полно конструкторов часов на STC15 - самое то для обучения. Для прошивки достаточно простого юсб хвостика. http://microsin.net/programming/msc51/d ... 404as.html
STC15 - не полный аналог по ножкам, по командам - да.... полный аналог AT89C52 - это STC89C52, есть платы с ним, нужен только USB кабель ...... Но.. есть проблемы с этими платами. С платой на STC89С52 есть сложности.. А вот та же плата, только с STC12C5A60S2 - работает очень хорошо с хвочтиком. (STC12C5A60S2 полностью совпадает по ножкам с родным l 8052 и с STC89С52) . Микросхема STC12C5A60S2 полностью совпадает по ножкам с родным Atmel 8052, и по регистрам и по командам. Только у STC12C5A60S2 много чего добавлено. АЦП 10 разрядов..
А вот 15 серия по ножкам уже не совпадает с родным 8052...
Вот учебный сайт для китайских ПТУшников и студентов, на нем можно скачать последнюю версию STC-ISP.exe на английском и даташиты на STC. http://www.stcmcudata.com
Вот тут у меня подробно про "нерабочий USB-UART хвостик c 89C52" и как исправить ситуацию.. И про многое другое.. viewtopic.php?p=4282121#p4282121
Самое главное, что у STC 12 15 на борту есть 10 разрядный АЦП.. И помехоустойчивость выше, чем у Атмелов. И эффективня частота около 400 мгц. (рабочая около 80 мгц.).
Работают как на 5 вольт, так есть модели, которые работают от литиевого аккумулятора.. Программирование очень простое и дешовое, только диод и резистор не забудте воткнуть в соединение микросхемы и USB UART..... А уж купив родной программатор U8W Mini...
Я сам искал 8051 проц... Все не так... Как было при моем DOSе... PLM 51 и ассемблер не запустить. И вдруг оказалось, что китайцы дальше всей планеты ушли... А уж на практике все вообще элементарно заработало.. И даже программатор U8W Mini работающий с STC-ISP.exe(программатор ) и Кейлом можно купиь на Али всего за 1300р Даже под ХР все отлично работает.
Собрал и запустил все это по старой памяти, ребенку побаловаться.
Если не хотите сложностей, то полный аналог 8052 это STC89C52.. А там дальше - сами разберетесь.. DIP коруса у STC тоже есть.
Почему пошаговая отладка работает только с основным файлом проекта... Пишу на ассемблере.
ПО оригинальное? Писал ранее на АСМе для С8051 под Silicon Labs IDE. Она использует Keil Tools. Нареканий не было. В подпрограммы отладчиком заходил. Сейчас переключисля на Simplicity Studio и в основном на С. Эта Studio также использует Keil Tools для С8051. Нареканий по-прежнему нет.
Так долго ждал ответа, что забыл про тему и не подписывался... ПО: IDE-Version: µVision V4.60.6.10 Toolchain: PK51 Prof. Developers Kit Version: 9.51
Даже пришлось запилить конвертер из lst в sdi, что-бы хоть как-то в протеусе видеть в каком месте исходного кода программа находится. Один фиг, не все можно посмотреть, ADuC8xx в протеусе нет, а симуляция на 80С52 застревает как-только дело касается специфических для ADuC регистров
_________________ Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
Компилятор еще можно заставить работать с произвольным набором РСФ, а вот симулятор - заметно сложнее... Придется прописывать и сами регистры и их работу. Это уже надо стать знатоком выбранного симулятора на уровне его(симулятора) разработчика. Как вариант - отлаживать раздельно прожку для "стандартного ядра" и затем подставлять фрагменты с "новинками" в рамках отладки на макете, используя возврат данных в контрольных точках через СОМ порт в какой-либо консольный терминал в ПК.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения