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

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

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

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

<< Назад

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

Канада планирует построить космодром 06.04.2026

Развитие космической инфраструктуры все чаще становится вопросом не только науки и технологий, но и национальной безопасности. Многие государства стремятся получить независимый доступ к космическим запускам, чтобы не зависеть от внешних партнеров и укреплять собственный технологический суверенитет. На этом фоне Канада объявила о запуске масштабного проекта по созданию собственного космодрома. Министр обороны Канады Дэвид Мак-Гинти сообщил, что правительство страны инвестирует 200 млн канадских долларов, что составляет около 150 млн долларов США, в строительство национального космодрома. Эти средства станут частью долгосрочной программы развития суверенных возможностей космических запусков. По словам Мак-Гинти, Министерство обороны подписало 10-летнее соглашение с компанией MLS на сумму 200 млн долларов. В рамках этого контракта планируется строительство стартовой площадки, которая будет использоваться не только военными структурами, включая Министерство обороны и Вооруженные силы ...>>

Обновленные телевизоры Xiaomi S Mini LED TV 2026 06.04.2026

Компания Xiaomi представила обновленную серию телевизоров S Mini LED TV 2026, которая заметно отличается от версии, недавно вышедшей на европейский рынок. Новое поколение ориентировано на расширенные возможности отображения и более гибкую конфигурацию экранов, что делает линейку более универсальной для разных сценариев использования. В обновленной серии Xiaomi S Mini LED TV 2026 предлагается сразу пять диагоналей, начиная от 55 дюймов и заканчивая внушительными 100 дюймами. Флагманская модель оснащена 1920 зонами локального затемнения, способна достигать пиковой яркости до 2000 нит и поддерживает частоту обновления изображения до 288 Гц, что делает ее особенно привлекательной для динамичного контента и игр. Младшая модель в линейке отличается в первую очередь количеством зон локального затемнения, которых здесь 576, однако остальные ключевые характеристики остаются на уровне старших версий. Это позволяет сохранить высокое качество изображения даже в более доступном сегменте, не ж ...>>

Беспилотный грузовой самолет с двигателем AEP100 05.04.2026

Авиационная отрасль стоит перед масштабной задачей перехода к экологически чистым технологиям, и одним из наиболее перспективных направлений считается использование водорода в качестве топлива. Этот элемент рассматривается как потенциальная альтернатива традиционным видам авиационного топлива благодаря своей энергоэффективности и отсутствию углеродных выбросов при использовании. На этом фоне Китай сообщил об успешном испытании беспилотного грузового самолета, оснащенного турбовинтовым двигателем AEP100 мегаваттного класса, работающим на водороде. Это событие стало важным этапом в развитии авиационных технологий, так как позволило протестировать двигатель в реальных условиях полета, а не только в лабораторной среде. Испытательный полет был проведен в субботу, 4 апреля, в городе Чжучжоу, расположенном в китайской провинции Хунань. Именно там впервые в реальных условиях был задействован водородный авиационный двигатель подобной мощности, что дало возможность оценить его стабильность ...>>

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

В продажу поступят гелиомобили 14.03.2007

Работающая в Монако автомобильная фирма "Вентури" осенью 2006 года продемонстрировала на Всемирном автомобильном салоне в Париже полностью экологичное средство передвижения - гелио-мобиль "Эклектик".

Его крыша несет солнечную батарею площадью 2, 5 квадратного метра, от батареи заряжаются аккумуляторы, вращающие колеса. Можно также производить подзарядку от сети; кроме того, в багажнике гелиомобиля спрятан небольшой складной ветро-электрогенератор. На стоянке он выдвигается и тоже заряжает аккумуляторы. Дальность поездки с одной зарядки - 50 километров, так что машина предназначена для поездок по городу.

Первые 200 машин поступят в продажу в июне 2007 года, причем для управления этим экипажем не понадобятся водительские права, а допустимый возраст водителя - от 16 лет и старше.

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

▪ Ускорение тока в квантовой плазме

▪ Универсальный программатор с интерфейсом USB

▪ Миниатюрные встраиваемые накопители eMMC от Toshiba

▪ О пользе сна в рабочее время

▪ Контролироль движения единичных скирмионов при комнатной температуре

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

 

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

▪ раздел сайта ВЧ усилители мощности. Подборка статей

▪ статья Плитку выручил утюг. Советы домашнему мастеру

▪ статья Какой фильм заставил Игги Попа и Тома Уэйтса снова начать курить? Подробный ответ

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

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

▪ статья Сетевой блок питания для транзисторной аппаратуры, 220/+-6,8 вольт 350 миллиампер. Энциклопедия радиоэлектроники и электротехники

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

Имя:


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


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





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

www.diagram.com.ua

www.diagram.com.ua
2000-2026