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

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

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

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

<< Назад

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

Оптимальная продолжительность сна 15.07.2025

Вопрос о том, сколько нужно спать, чтобы чувствовать себя отдохнувшим, волнует миллионы людей по всему миру. Общепринятая рекомендация - восемь часов сна - давно стала стандартом, однако недавние исследования ставят под сомнение ее универсальность. Оказалось, что продолжительность здорового сна зависит не только от биологии, но и от культурных и социальных условий. Американские ученые провели масштабное исследование, охватившее около пяти тысяч человек из двадцати стран. Полученные данные выявили значительные различия в продолжительности сна в зависимости от места проживания. Например, в Японии средний человек спит всего около шести часов с небольшим, тогда как во Франции этот показатель приближается к восьми. Канадцы, в свою очередь, в среднем спят по семь с половиной часов. Один из руководителей исследования, профессор социальной и культурной психологии Стивен Хайне из Университета Британской Колумбии, подчеркивает, что универсального стандарта сна не существует. По его словам, ...>>

Компьтерная оценка состояния культурных растений 15.07.2025

Современное сельское хозяйство переживает технологическую революцию, и одной из ключевых задач становится точная диагностика состояния растений. Устойчивость к климатическим изменениям, экономное использование ресурсов и повышение урожайности требуют новых подходов. Исследователи из Еврейского университета в Иерусалиме предложили инновационное решение, объединив возможности дронов и искусственного интеллекта. Традиционные методы дистанционного анализа в агросекторе сталкиваются с ограничениями: они не всегда способны точно определить комбинированный стресс у растений, возникающий, например, при одновременном дефиците влаги и азота. Чтобы преодолеть это, израильские ученые оснастили дроны сложной системой сенсоров - гиперспектральными, тепловыми и RGB-камерами. Эти камеры не просто фиксируют изображение, но и собирают обширные данные о состоянии листвы, позволяя "увидеть" скрытые признаки стресса, незаметные невооруженному глазу. Для обработки полученных изображений и сигналов был ...>>

Особенности восприятия старости 14.07.2025

Понятие старости зачастую оказывается субъективным и подвижным: то, что кажется "преклонным возрастом" в юности, в зрелости уже воспринимается иначе. Исследования показывают, что границы старения не столько определяются биологическим возрастом, сколько зависят от психологического восприятия и отношения к собственному телу и уму. Недавнее исследование, проведенное в США среди двух тысяч человек старше сорока лет, позволило ученым определить, в каком возрасте американцы начинают ощущать себя "старыми". Оказалось, что чувство старения в среднем наступает уже к 47 годам, а заметная обеспокоенность внешними возрастными изменениями - примерно к пятидесяти. Это тот момент, когда люди чаще начинают замечать морщины, снижение тонуса кожи и общую усталость. На фоне этих внешних изменений многие участники признались, что испытывают тревогу по поводу когнитивного спада. Более половины респондентов признались, что хотя бы раз в день забывают, что собирались сказать, а четверть - теряют мысль ...>>

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

Похолодало внезапно 05.06.2010

Считается, что существенные изменения климата происходят медленно. Однако канадские исследователи из университета Саскачевана показали, что во время малого ледникового периода, начавшегося 12 800 лет назад и продолжавшегося 1300 лет, холод вступил в свои права очень быстро - всего за несколько месяцев.

Канадцы изучили осадки, накапливавшиеся тысячелетиями на дне одного из озер на западе Ирландии. Оказалось, что 12 800 лет назад менее чем за год в этом озере практически исчезло все живое. Как говорят авторы исследования, "озеро словно в один момент перенесли из Ирландии на Шпицберген".

Причина такого резкого похолодания известна: из-за потепления рухнули ледовые плотины, огораживавшие ледниковые озера на территории Канады. Миллиарды кубометров холодной воды хлынули в Атлантику. Из-за этого прервалось теплое течение Гольфстрим и все Северное полушарие заросло льдом на тысячи лет.

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

▪ У кукурузы есть мозг

▪ Космонавты подтверждают: соль опасна

▪ Мобильная зарядная станция Wuling 141 кВтч

▪ Наноэлемент для пайки готов

▪ Нечистая кровь

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

 

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

▪ раздел сайта Альтернативные источники энергии. Подборка статей

▪ статья Что пройдет, то будет мило. Крылатое выражение

▪ статья Кто изготовил первую иголку? Подробный ответ

▪ статья Майоран обыкновенный. Легенды, выращивание, способы применения

▪ статья Наведение мата на стекло. Простые рецепты и советы

▪ статья Волшебное путешествие платка. Секрет фокуса

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

Имя:


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


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





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

www.diagram.com.ua

www.diagram.com.ua
2000-2025