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

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

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

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

<< Назад

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

Самолет меняет вкус привычных продуктов 27.09.2026

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

Новая нержавеющая сталь заменит титан в производстве водорода 27.09.2026

Производство водорода с помощью электролиза требует материалов, способных длительное время работать в агрессивной химической среде и при высоких электрических напряжениях. Даже нержавеющая сталь, которая обычно отличается высокой устойчивостью к коррозии, в таких условиях постепенно разрушается. Поэтому в наиболее ответственных элементах электролизеров приходится использовать гораздо более дорогие материалы, прежде всего титан. Исследователи из Университета Гонконга предложили новый сплав, который потенциально способен значительно сократить зависимость от титана. Материал получил название SS-H2, а его главное преимущество заключается в необычном механизме защиты поверхности. Обычная нержавеющая сталь сохраняет устойчивость благодаря тонкой пассивирующей пленке на основе оксида хрома. Этот слой изолирует металл от агрессивной среды и препятствует дальнейшему развитию коррозии. Однако при достаточно высоком электрическом напряжении защитная пленка может разрушаться, после чего традици ...>>

Кораллы, устойчивые к потеплению, хуже справляются с болезнями 26.09.2026

Коралловые рифы существуют в условиях постоянного взаимодействия множества факторов окружающей среды, поэтому способность переживать один вид стресса еще не гарантирует общей устойчивости организма. Особенно важной эта проблема становится на фоне потепления океана, которое уже приводит к массовому обесцвечиванию кораллов. Исследователи Бостонского университета обнаружили, что симбиоз с теплостойкими водорослями рода Durusdinium действительно помогает кораллам переносить кратковременное повышение температуры, но одновременно может повышать их уязвимость к бактериальным инфекциям. Жизнь кораллов во многом зависит от микроскопических водорослей, которые обитают внутри их тканей. Благодаря фотосинтезу эти симбионты обеспечивают организм-хозяин значительной частью питательных веществ. Однако при чрезмерном нагревании воды нормальное взаимодействие нарушается: водоросли могут покидать ткани коралла, из-за чего он теряет окраску и белеет. Массовое обесцвечивание сегодня считается одной из ...>>

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

Гибридный электронаддув 04.08.2018

Итальянская компания Ferrari зарегистрировала в Европейском патентном ведомстве заявку на автомобильный двигатель внутреннего сгорания с электрическим наддувом довольно необычной конструкции.

Электронаддув на сегодняшний день используется в некоторых моторах Audi и Mercedes-Benz, но лишь в комбинации с традиционным турбонагнетателем. Итальянцы же придумали совершенно новую конструкцию, аналогов которой до сих пор не существует. В выпускной тракт этого мотора встроено турбинное колесо, однако оно не имеет механической связи с компрессором и вращает лишь генератор, который вырабатывает электричество.

Электричество накапливается в аккумуляторной батарее и используется как для привода тягового электромотора, который вращает колеса автомобиля, так и для питания турбокомпрессора с электрическим приводом, который нагнетает воздух в двигатель.

В Ferrari надеются таким неординарным способом по возможности уменьшить традиционные для обычных турбин задержки в отклике на нажатие педали газа.

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

▪ Омолаживающие таблетки

▪ Производство водорода в открытом море

▪ SpaceX запустит военный спутник ASFPC-52

▪ Топливо из виски

▪ ИС объединяет РЧ-коммутатор, цепь регулируемой емкости и микроконтроллер

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

 

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

▪ раздел сайта Медицина. Подборка статей

▪ статья Логарифмическая линейка. История изобретения и производства

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

▪ статья Замена баллонов со сжиженными и растворенными газами. Типовая инструкция по охране труда

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

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

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

Имя:


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


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





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

www.diagram.com.ua

www.diagram.com.ua
2000-2026