Распродажа

Электронные компоненты со склада по низким ценам, подробнее >>>

Журнал Радио

2004: 
1, 2, 3, 4, 5, 6, 7, 8
2003: 
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
2002: 
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
2000: 
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
1999: 
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
1998: 
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
1971: 
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
1947: 
1, 2, 3, 4, 5
1946: 
1, 2, 3, 4-5, 6-7, 8-9

Новости электроники

В 14 раз выросло количество россиян на MediaTek Labs ? проекте по созданию устройств "интернета вещей" и "носимых гаджетов"

Сравнив статистику посещения сайта за два месяца (ноябрь и декабрь 2014 года), в MediaTek выяснили, что число посетителей ресурса из России увеличилось в 10 раз, а из Украины ? в 12. Таким образом, доля русскоговорящих разработчиков с аккаунтами на labs.mediatek.com превысила одну десятую от общего количества зарегистрированных на MediaTek Labs пользователей.

Новое поколение Джобсов или как MediaTek создал свой маленький "Кикстартер"

Амбициозная цель компании MediaTek - сформировать сообщество разработчиков гаджетов из специалистов по всему миру и помочь им реализовать свои идеи в готовые прототипы. Уже сейчас для этого есть все возможности, от мини-сообществ, в которых можно посмотреть чужие проекты до прямых контактов с настоящими производителями электроники. Начать проектировать гаджеты может любой талантливый разработчик - порог входа очень низкий.

Семинар и тренинг "ФеST-TIваль инноваций: MAXIMум решений!" (14-15.10.2013, Новосибирск)

Компания Компэл, приглашает вас принять участие в семинаре и тренинге ?ФеST-TIваль инноваций: MAXIMум решений!?, который пройдет 14 и 15 октября в Новосибирске.

Мне нравится

Комментарии

дима пишет в теме Параметры биполярных транзисторов серии КТ827:

люди куплю транзистар кт 827А 0688759652

тамара плохова пишет в теме Журнал Радио 9 номер 1971 год. :

как молоды мы были и как быстро пробежали годы кулотино самое счастливое мое время

Ивашка пишет в теме Параметры отечественных излучающих диодов ИК диапазона:

Светодиод - это диод который излучает свет. А если диод имеет ИК излучение, то это ИК диод, а не "ИК светодиод" и "Светодиод инфракрасный", как указано на сайте.

Владимир пишет в теме 2Т963А-2 (RUS) со склада в Москве. Транзистор биполярный отечественный:

Подскажите 2т963а-2 гарантийный срок

Владимир II пишет... пишет в теме Параметры биполярных транзисторов серии КТ372:

Спасибо!

Журнал Радио 5 номер 2004 год.

МИКРОПРОЦЕССОРНАЯ ТЕХНИКА

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

С. ЧЕКУНОВ, г. Ижевск 

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

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

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

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

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

asem example.asm eeprom.hex/define:EEPROM

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

Далее ассемблер встретит директиву 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://www.atmel.com/pub/atmel/ hex2bin.exe> и <ftp://www.atmel.com/ pub/atmel/bin2hex.exe>.

Редактор — А. Долгий 

Вернуться к содержанию журнала "Радио" 5 номер 2004 год







Ваш комментарий к статье
Журнал Радио 5 номер 2004 год. :
Ваше имя:
Отзыв: Разрешено использование тэгов:
<b>жирный текст</b>
<i>курсив</i>
<a href="http://site.ru"> ссылка</a>