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>.

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

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

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

<< Назад

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

Дети, растущие рядом с природой, обретают крепкие кости 02.03.2026

Влияние окружающей среды на здоровье человека становится все более очевидным, особенно в детском возрасте. Новое исследование, опубликованное в журнале JAMA Network Open, показывает, что близость к природе напрямую связана с крепостью костей у детей. Ученые установили, что у детей, чьи дома окружены природными территориями в радиусе 1000 метров на 25% больше обычного, риск развития крайне низкой плотности костей снижается на 65%. Для проведения исследования были проанализированы данные более 300 детей, проживающих в городских, пригородных и сельских районах Фландрии в Бельгии. Плотность костной ткани у детей в возрасте от четырех до шести лет оценивалась с помощью ультразвуковых методов. Такой подход позволил безопасно и точно измерить состояние костей на ранних этапах формирования скелета. При анализе учитывались ключевые факторы, влияющие на рост и развитие детей: возраст, вес, рост, этническая принадлежность и уровень образования матери. На основании этих параметров исследоват ...>>

Самовосстанавливающаяся инфраструктура будущего 02.03.2026

Современные мосты и бетонные конструкции по всему миру сталкиваются с проблемой устаревания и износа. Многие сооружения, построенные до 1980-х годов, постепенно теряют свою несущую способность, что требует дорогого ремонта или полной замены. Недавние разработки ученых из Швейцарских федеральных лабораторий материаловедения и технологий (Empa) предлагают инновационное решение - систему укрепления бетонных конструкций с помощью "умной стали", способной самостоятельно устранять трещины и повреждения. В основе новой технологии лежит арматура из сплава на основе железа с эффектом памяти формы (Fe-SMA). Этот материал обладает уникальным свойством: при нагревании до 190-200 °C стержни стремятся вернуться к своей первоначальной конфигурации. В бетонной конструкции это создает внутреннее напряжение, которое затягивает трещины и выравнивает деформированные элементы, существенно повышая прочность и долговечность сооружений. Актуальность разработки объясняется критическим состоянием инфрастр ...>>

Поцелуи полезны для здоровья 01.03.2026

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

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

Интеллектуальная система накопления энергии EcoBlade от Schneider Electric 13.01.2016

Компания Schneider Electric представила "умную" масштабируемую систему накопления энергии EcoBlade, которая позволит раскрыть весь потенциал возобновляемых источников энергии.

EcoBlade представляет собой гибкую систему хранения энергии на литий-ионных батареях. EcoBlade состоит из модулей размером с 30-дюймовый плоский экран и весом до 25 кг. Каждый модуль имеет батареи с интеллектуальным подключением и готов к использованию в автономном режиме. В доме, оборудованном системой генерации на основе солнечной энергии, можно использовать энергию, накапливаемую с помощью EcoBlade, для личного потребления или для выдачи ее в микросети.

Такие модули также могут быть использованы в электрических сетях или критичных к перебоям поставки электроэнергии объектах инфраструктуры, например, в центрах обработки данных. Модули EcoBlade могут быть собраны и интегрированы в контейнеры, чтобы обеспечить емкость уровня МВтч и предоставлять дополнительные услуги по управлению в масштабах всей электрической сети.

Полностью масштабируемая система EcoBlade проста в установке и обслуживании. Schneider Electric интегрировала EcoBlade в широкую экосистему своих решений для электроэнергии, опираясь, в частности, на набор сервисных модулей на базе облачных технологий программного обеспечения StruxureWare. StruxureWare собирает и управляет операционными данными и данными о погоде, оптимизируя энергетическую эффективность во всей электрической цепи от источника генерации электроэнергии (например, солнечных батарей или ветряных турбин), что гарантирует экономически эффективное хранение и потребление энергии.

Система EcoBlade появится в продаже в 2016 г. Предполагаемая стоимость EcoBlade составит $500 за кВт.ч.

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

▪ Робот помогает чинить колено

▪ Очки Google Glass будут передавать звук через кость черепа

▪ DVD-харакири от Disney

▪ Кораллы не загорают

▪ Процессоры Intel Xeon E5-2600/1600 v3

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

 

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

▪ раздел сайта Гирлянды. Подборка статей

▪ статья Гулливер. Крылатое выражение

▪ статья Кому посвящена песня Мишка, Мишка, где твоя улыбка? Подробный ответ

▪ статья Маляр по покраске автомобилей. Типовая инструкция по охране труда

▪ статья Простой сторож автомобиля. Энциклопедия радиоэлектроники и электротехники

▪ статья Управление высокочастотной микросваркой. Энциклопедия радиоэлектроники и электротехники

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

Имя:


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


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





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

www.diagram.com.ua

www.diagram.com.ua
2000-2026