Menu Home

Бесплатная техническая библиотека для любителей и профессионалов Бесплатная техническая библиотека


Инициализация дополнительных сегментов памяти в программах для микроконтроллеров семейства MCS-51. Энциклопедия радиоэлектроники и электротехники

Бесплатная техническая библиотека

Энциклопедия радиоэлектроники и электротехники / Микроконтроллеры

Комментарии к статье Комментарии к статье

Современные микроконтроллеры имеют встроенную энергонезависимую память данных (EEPROM), информацию в которую иногда необходимо занести до начала работы прибора. Образ (прошивка) этой памяти должен быть сформирован при разработке программы. Это позволяют сделать, например, ассемблеры для микроконтроллеров семейств PICmicro и AVR. Они дают программисту возможность организовать дополнительный сегмент памяти и задать в нем исходные данные для записи в EEPROM.

Ассемблеры для микроконтроллеров с ядром MSC-51 тоже позволяют разделить память на несколько частей, но лишь в одной из них - сегменте исполняемого кода - возможна инициализация. Во всех остальных разрешено лишь резервировать ячейки памяти и записывать в них данные только в процессе исполнения программы. Выходом из ситуации может послужить прием, о котором рассказано ниже. Суть его - в использовании условного ассемблирования, в результате чего инициализация сегмента кода происходит по-разному, в зависимости от условий трансляции. Полученные НЕХ-файлы могут быть использованы для программирования не только внутреннего EEPROM микроконтроллера, но и внешних микросхем памяти.

Искусственно создаваемые дополнительные сегменты (допустимо любое их число) помещают в текст программы до реального сегмента кода. Метки, определенные в одном из них, будут известны во всех следующих, в том числе в реальном сегменте кода. А вот ссылки в обратном направлении недопустимы. На тип и физическое расположение дополнительной памяти ограничений нет.

Пример программы с двумя дополнительными инициализированными сегментами, условно названными EEPROM и FLASH, приведен в табл. 1. Сохранив его в файле example.asm, воспользуемся ассемблером ASEM-51, который можно бесплатно "скачать" по адресу <plit.de/asem-51/ asem5113.zip>.

Прежде всего запустим ассемблер командной строкой

asem example.asm eeprom.hex/define:EEPROM

Обрабатывая первые строки текста программы, он поместит в свою таблицу символов метки idEeprom, ptrWord и prtBufE, а в выходной файл eeprom.hex (табл. 2) - заданные директивами DB и DW данные. Затем будет выполнена проверка длины сегмента. Если значение программного счетчика превысило физически существующий объем EEPROM (в рассматриваемом случае - 640 ячеек), будет выведено сообщение об ошибке. При заведомо небольшом объеме сегмента проверку можно исключить. Аналогичные проверки можно предусмотреть и в других сегментах.

Инициализация дополнительных сегментов памяти в программах для микроконтроллеров семейства MCS-51
(нажмите для увеличения)

Далее ассемблер встретит директиву IFNDEF EEPROM. Поскольку символ с таким именем в командной строке определен (параметр /define:EEPROM), все следующие строки программы, вплоть до директивы ENDIF, будут проигнорированы и трансляция на этом закончится.

Повторную трансляцию той же программы запустим командной строкой

asem example.asm flash.hex/define:FLASH

Она отличается от предыдущей лишь определением символа FLASH вместо EEPROM. Первый этап трансляции пройдет точно так, как описано выше, и в выходной файл будут записаны данные сегмента EEPROM. Однако директива IFNDEF EEPROM на этот раз процесс не прервет, а следующая за ней директива ORG 0 обнулит программный счетчик. Ассемблер начнет заносить в выходной файл с нулевого адреса данные, предназначенные для сегмента FLASH. Трансляцию прервет директива IFNDEF FLASH. Окончательный вид файла flash.hex показан в табл. 3.

Трансляцию истинного сегмента исполняемого кода зададим командой

asem example.asm

Прежде всего, будут вновь оттранслированы дополнительные сегменты, а все определенные в них метки занесены в таблицу символов ассемблера, что позволит ссылаться на них из сегмента кода. Директива ORG 0 в самом его начале в очередной раз обнулит программный счетчик. Далее трансляция пойдет обычным образом. В полученном файле example.hex (табл. 4) исполняемый код программы начинается с четвертой строки, находясь после строк, идентичных содержащимся в предыдущих НЕХ-файлах.

Наличие лишней информации обычно не мешает правильной загрузке кода в соответствующие области памяти микроконтроллера. В буфере программы, управляющей программированием, правильные данные при совпадении адресов "вытесняют" ранее занесенные. И только если новый сегмент короче предыдущего, в буфере сохранится его "хвост". По этой причине желательно описывать в программе сегменты в порядке возрастания их длины.

Некоторые программаторы не имеют промежуточного буфера либо строго контролируют входные данные, не допуская перекрытия адресов. В первом случае программирование будет неправильным, во втором - вообще не начнется, пока "ошибки" не будут устранены.

Удалить лишние строки из НЕХ-файла можно вручную с помощью любого текстового редактора. Можно сделать это и автоматически, выполнив подряд две команды:

hex2bin example.hex bin2hex example.bin

Первая создаст двоичный образ содержащихся в файле example.hex данных и поместит его в файл example.bin. Вторая выполнит обратное преобразование и создаст новый файл example.hex уже без излишеств. Необходимые программы можно "скачать" по адресам <ftp://atmel.com/pub/atmel/hex2bin.exe> и <ftp://atmel.com/pub/atmel/bin2hex.exe>.

Автор: С.Чекунов, г. Ижевск

Смотрите другие статьи раздела Микроконтроллеры.

Читайте и пишите полезные комментарии к этой статье.

<< Назад

Последние новости науки и техники, новинки электроники:

Атомный секрет вечного блеска золота 20.06.2026

Золото издавна считается символом вечности и благородства не только из-за своей редкости, но и благодаря удивительной химической стойкости. В отличие от большинства металлов, оно не окисляется на воздухе, не тускнеет и не покрывается ржавчиной даже спустя тысячелетия. Эта уникальная инертность позволила золотым артефактам сохранять первозданный блеск с древних времен. Однако точный механизм такой защиты долго оставался загадкой для ученых. Недавнее исследование американских химиков-вычислителей раскрыло, что дело не просто в слабом взаимодействии с кислородом, а в особой атомной структуре поверхности металла. Сотрудники Тулейнского университета Санту Бисвас и Мэтью М. Монтемор провели детальное компьютерное моделирование, чтобы понять, как молекулы кислорода взаимодействуют с поверхностью золота. Ученые сравнили два основных типа атомных структур: "реконструированные" и "нереконструированные" поверхности. Было доказано, что природная способность золота к перестройке атомов играет кл ...>>

Смарфон Realme 16T 5G 20.06.2026

В сегменте доступных смартфонов с акцентом на длительную работу без подзарядки компания Realme представила интересную новинку - модель Realme 16T 5G. Главным преимуществом устройства стала по-настоящему впечатляющая батарея емкостью 8000 мАч, которая способна обеспечить до трех дней автономной работы при умеренном использовании. При этом инженерам удалось сохранить относительно компактный корпус толщиной менее 9 мм и вес всего 224 грамма, что делает смартфон удобным для повседневного ношения несмотря на внушительный аккумулятор. Смартфон оснащен большим 6,8-дюймовым LCD-дисплеем с высокой частотой обновления 144 Гц и пиковой яркостью до 1200 нит. Такое сочетание обеспечивает плавную картинку в динамичных сценах и комфортное восприятие контента даже под прямыми солнечными лучами. За производительность отвечает энергоэффективный процессор MediaTek Dimensity 6300, дополненный оперативной памятью LPDDR4X и накопителем UFS 2.2. Для эффективного отвода тепла во время продолжительных нагру ...>>

Проблема набора веса после 40 19.06.2026

С возрастом многие люди замечают, что поддерживать привычный вес становится все сложнее, даже если рацион и уровень активности существенно не меняются. Ученые из Каролинского института в Швеции раскрыли одну из ключевых биологических причин этого явления. Они показали, что с годами в жировой ткани замедляется процесс обновления липидов, из-за чего организм постепенно накапливает жир. Это естественное возрастное изменение объясняет, почему после 40 лет тело начинает "работать" иначе, способствуя набору веса. В долгосрочном исследовании специалисты наблюдали за жировой тканью 54 мужчин и женщин на протяжении в среднем 13 лет. Независимо от того, набирали участники вес или, наоборот, худели, у всех без исключения скорость липидного обмена в жировых клетках заметно снижалась. Жир в клетках обновляется все медленнее, и этот процесс происходит автоматически с течением времени. Те, кто не компенсировал замедление уменьшением калорийности питания, в среднем набирали около 20% от исходного в ...>>

Случайная новость из Архива

Архитектура ячейки SRAM на одном транзисторе 18.12.2015

На конференции International Electron Devices Meeting 2015 компания Zeno Semiconductor представила биполярный NMOS-транзистор, который при ближайшем рассмотрении оказался составлен из структур двух транзисторов с открытой базой. Получился этакий виртуальный транзистор с возможностью работать подобно двухтранзисторной ячейке SRAM.

Разработчик предлагает создавать из подобных транзисторов энергоэффективные однотранзисторные ячейки SRAM и производительные двухтранзисторные. В обоих случаях площадь ячейки SRAM Zeno окажется в разы меньше площади классической 6T-SRAM. Это экономия места и энергопотребления, включая выигрыш на снижении утечек.

Сообщается, что площадь ячейки SRAM Zeno в 28-нм техпроцессе равна 0,025 кв. мкм. Типичная 6T-SRAM в данном техпроцессе занимает 0,127 кв. мкм. Интересно отметить, что новая ячейка даже меньше 10-нм FinFET SRAM Samsung с площадью 0,040 кв. мкм.

Также разработчики сообщают, что надежность инновационной однотранзисторной ячейки окажется не хуже показателя SEU (Single Event Upsets) для 6T-SRAM.

Другие интересные новости:

▪ TPS62510 - 1,5 А понижающий преобразователь для портативных устройств

▪ Сыр из дрожжей

▪ Красное вино способно продлить жизнь

▪ Планктон против пластика

▪ Сверхзвуковые бипланы экономичнее обычных самолетов

Лента новостей науки и техники, новинок электроники

 

Интересные материалы Бесплатной технической библиотеки:

▪ раздел сайта Жизнь замечательных физиков. Подборка статей

▪ статья Сжечь свои корабли. Крылатое выражение

▪ статья Где появились первые варвары? Подробный ответ

▪ статья Функциональный состав телевизоров Sharp. Справочник

▪ статья Вибросигнальное устройство. Энциклопедия радиоэлектроники и электротехники

▪ статья Двухдиапазонный диполь. Энциклопедия радиоэлектроники и электротехники

Оставьте свой комментарий к этой статье:

Имя:


E-mail (не обязательно):


Комментарий:





Главная страница | Библиотека | Статьи | Карта сайта | Отзывы о сайте

www.diagram.com.ua

www.diagram.com.ua
2000-2026