At89c51 программа для прошивки

Обновлено: 05.02.2023

доброго времени суток! хочу собрать программатор AT-Prog, нашёл at89c51, теперь незнаю чем её прошить для этого программатора, не подскажите?

вобще можно найти at89S52, он с последовательным интерфейсом и его можно прошить в 5 проводков. а этот. надо программатор искать. я собрал по схеме из журнала Радио 9/2003, но так и не прошил. там прога под ДОС, я переписал на линух, но оно не прошивало. там еще вроде была схема на какой-то АВРке, если ее заменить на аналогичную более новую, то все будет просто . а какие контроллеры собрался прошивать? может стоит использовать те, у которых есть интерфейс последовательного программирования?

с51 можно заменить на atmega8515 без переделки платы, могу дать прошивку для него, если сам не скомпилишь. этот можно прошить через 5 проводков от LPT.

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

вообще хотел собрать этот программатор для работы с at89c2051 и at89c4051, программа под винду, других не нашёл у всех работа в досе, а в дос не врубаюсь

На вебинаре были представлены линейка компонентов для электропитания и интерфейсные модули. Мы рассмотрели популярные группы изолированных и неизолированных (PoL) DC/DC-преобразователей последних поколений, новые компактные модульные источники питания, устанавливаемые на печатную плату (открытые и корпусированные), источники питания, монтируемые как на шасси (в кожухе и открытые), так и на DIN-рейку.

Встраиваемые ИП LM(F) производства MORNSUN заслуженно ценятся производителями во всем мире, поскольку среди широчайшего ассортимента продукции компании можно найти источник питания для любых задач. Представители семейств LM и LMF различаются по мощности и выходному напряжению, их технические и эксплуатационные характеристики подходят для эксплуатации в любых электрических сетях и работают в широком диапазоне условий окружающей среды. Неизменными остаются высокое качество и демократичная цена.

_________________
А люди посмотрят и скажут: "Собаки летят. Вот и осень."

Если прошивать AT89C2051, то я использую TAFE, правда он через LPT, но под винду (ICProg), и пока ни разу меня не подводила. Из микрух нужна тока 74hc174 или 555тм9. Напряжение 19 вольт беру с зарядника ноута. Правда чтобы работало там нужно схемку немного доработать.

Для прошивки AT89C2051(4051) также подходит программатор DL2TM , работает через LPT
под управлением ICProg .

_________________
Все мы работаем по методу Робинзона Крузо – ждем пятницу.

Если прошивать AT89C2051, то я использую TAFE, правда он через LPT, но под винду (ICProg), и пока ни разу меня не подводила. Из микрух нужна тока 74hc174 или 555тм9. Напряжение 19 вольт беру с зарядника ноута. Правда чтобы работало там нужно схемку немного доработать.

В один прекрасный момент случилось то, что должно было случиться еще очень давно, это изучение микроконтроллеров серии MCS-51 на ассемблере. В начале этого пути упоминались AT89C4051, но они мне показались не функциональными сточки зрения прошивки, так как все программаторы, которые я встречал в сети, были либо под COM-порт, либо LPT. Тогда я полез в каталог данного семейства и начал смотреть подобные микроконтроллеры. В итоге нашёл AT89S51, AT89S52, AT89S53 – это тот же самый AT89C4051, но у серии S есть ISP и они имеют большее количество памяти и портов ввода вывода. Поиски программатора тоже были не из легких, но в скорее я нашёл то, что искал – это был USBasp с модифицированной прошивкой и новым софтом. Вот такое вот вступление, теперь же рассмотрим сам программатор и отладочную плату с некоторыми простыми примерами.

Программатор для AT89S52

Схема программатора

Программатор поддерживает AT89S51, AT89S52, AT89S53, AT89S8252, AT89S8253, AT89S2051, AT89S4051 + еще много разных камней от AVR . Схему собирать как есть без выкидывания деталей, хотя я не ставил конденсаторы на обвязку кварца, но это уже другой разговор.


Обвязка МК перед программированием


Здесь вывод 31 должен быть подтянут к + питания (лог. единица). Этот вывод дает знать, из какой памяти выполнять программу МК, если на выводе 31 присутствует логический ноль, то контроллер работает с внешней памятью, а если иначе, то с внутренней. Так как у меня нету внешней памяти я работаю с внутренней. Выводы Р1.5-Р1.7,RST это ISP для программирования МК, все также как и у AVR. Если вдруг не заработает, то есть не будет определяться МК программатором то за место R1 нужно поставить конденсатор на 0.1мкф как у автора. Почему я поставил резистор? Да потому что у меня не было под рукой мелкого конденсатора, + я еще дополнил данный вывод сброса кнопкой.


По программатору, думаю все понятно.

Отладочная плата для AT89S52

Начнем со схемы

Отладочная плата для AT89S52

Прежде всего, хочу сказать, для чего я делал такую плату:

  1. Отладка простых программ с использованием светодиодов (помигать, разработка световых эффектов и тп.).
  2. Работа с кнопками (лепить матричную клавиатуру было не охота, так что если нужна такая клавиатура, то можно использовать один порт для периферии).
  3. Отладка программ с использованием последовательного порта (UART).
  4. Изучение основ семейства AT89X51


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

Рассмотрим теперь несколько примеров программ на ассемблере.

Стандартный Hello World на ассемблере

В этой программе все просто, если непонятно о чем идет речь, то тогда лучше сначала просто открыть справочник и почитать про команды. Я пользуюсь этим

Теперь сделаем бегущий огонь.

Данная программа реализуется посредством записи в выбранный регистр (у меня это аккумулятор А ) числа FЕ это 1111 1110 и при выполнении команды rr A (сдвига содержимого аккумулятора в право ) получаем 0111 1111, и так далее. Аналогично можно сделать сдвиг влево.

Изменения в программе были внесены здесь

Все остальные куски программы такие же. Здесь тоже нет ни чего сложного.

Ну и еще одна программа с использованием кнопки. Сделаем так чтобы по нажатию кнопки светодиод бежал в право, а при следующем нажатии бежал в лево.

Здесь поступим следующим образом

Данный код не идеален, потому что его работа напрямую зависти от величины задержки, но для начала пойдет.

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Последние посетители 0 пользователей онлайн

Огонёк

Там и ручной тормоз убрать можно, и рычаг переключения передач тоже не особо нужен. Но как же здорово звучит V8! Обожаю этот звук!

Михайлик

У ламината с обратной стороны очень тонкая и хрупкая поверхность и когда её сверлишь хоть в какую сторону она просто лопается ка стекло и кусочками примерно по 1, а то и по 2 или даже 3 мм отваливается по краю. Возможно, что коронкой можно сверлить такой материал без сколов, но зубчики у коронки должны быть очень мелкие - как у надфиля. Крупными зубцами все равно будет край рваться и колоться. Для малых отверстий этот слой, скорей всего, можно аккуратно сточить конусным шлифовальным камнем в сверлильном станке до нужного диаметра ямки - дальше сверлом.

Лом_2

В Амфитоне не экономили диоды, цепи смещения ГСТ там раздельные. Кстати, в сам Амфитон токовое зеркало интегрируется чисто физически очень просто.) ЗЫ. Но вообще похожа.

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

ЕгорЪ

Всем привет. Тут при сведении катушек (датчик DD) такой эффект получается: сведение черезвычайно острое, т.е. буквально миллиметр сдвинуть и разбаланс из пяти Вольт переходит через ноль также в пять вольт. Как-то свести можно петлёй, но это не надежно. Догадываюсь, что где-то косяк. :) Но что именно может приводить к такому эффекту? В параметрах катушек вроде бы сильно не ошибся. Передающая: провод 0,35, 41 виток, конденсатор 470нФ, частота 7513 Гц. Приемная: провод 0,15, 200 витков, конденсатор 34нФ, частота 5857 Гц. Добротность контура выставлена 5,5, а КУ 80. Провод тонковат, а в остальном параметры в пределах рекомендуемых. Что же не так?

Контроллер изначально ускорен в два раза (по сравнению с прототипом i8051), т.е. просто установив бит в регистре можно сократить время исполнения команды с 12 циклов до 6.
Кроме AT89C51ED2 применить в нем можно любой контроллер из серии AT89C51, AT89S51, AT89C52, AT89S52 в корпусе TQFP44 но функциональность будет урезана соответственно. Выпускается более улучшенный вариант контроллера AT89LP51(ED2) со временем исполнения команды 1 такт.


Выводы контроллера

Все выводы контроллера разведены на гребенки (J1), параллельные гребенкам краевого разьема модуля (J0). Там где это имеет смысл, выводы контроллера и краевого разьема расположены напротив. Это упрощает их соединение джампером.


Например выводы SPI (SS, MOSI, SCK, MISO) и UART (TxD, RxD). Т.к. у данного контроллера один UART канал, а у платы их два, выбор канала производится соответствующими джамперами (16, 17 или 18, 19).


Вывод выбора внутренней/внешней памяти программ (EA, 30) подтянут к VCC резистором (по умолчанию выбрана внутренняя) и расположен напротив GND.

Напряжение питания

Модуль имеет два стандартных напряжения питания, 5V и 3,3V. Они выбираются джампером J3 и не требуют настроек и переключений на самой Pinboard II.

Подключение кварцевого резонатора

  • 1,8432 МГц
  • 3,6864 МГц
  • 4,9152 МГц
  • 6,1440 МГц
  • 7,3728 МГц
  • 9,8304 МГц
  • 11,0592 МГц
  • 12,2880 МГц
  • 14,7456 МГц
  • 18,4320 МГц
  • 19,6608 МГц
  • 22,1184 МГц

Интерфейс внешней памяти

Контроллер имеет интерфейс внешней памяти и он разведен на модуле, поэтому выходы регистра-защелки адреса также выведены на разьем (J2). Контакт RAM (J2.1) в этом разьеме служит для feedback, т. е. возможности отключения произвольных адресов установленной SRAM внешним дешифратором.
Контроллеры i51 изначально расчитаны на работу с интерфейсом внешней памяти. Т. е. ядро контроллера одно, а если не хватает стандартных возможностей, необходимые устройства ввода/вывода навешиваются извне по необходимости, используя этот интерфейс


Сброс и программирование

  • Физически соединиться с USART контроллера.
  • Запустить на компьютере программу FLIP от Atmel.
  • На контроллере посадить на землю PSEN (J4).
  • Подать питание на контроллер, или нажать RESET.

Отладка программ

  • ядро 8051 CPU
  • 5 Кбайт памяти кода (Flash), начиная с адреса 0 (загружаемая программа Monitor-51)
  • 256 байт внешней памяти данных (RAM XDATA) и 5 Кбайт буфера трассировки (опционально). Кроме того, внешняя память данных должна быть достаточно большой, чтобы вместить всю программу (код и данные). Вся эта область внешней памяти должна иметь архитектуру фон Неймана, это означает, что доступ к ней должен быть из пространств XDATA и CODE. Общий способ это сделать заключается в обьединении сигналов процессора /PSEN и /RD логическим элементом И. Выход этого элемента затем подключается к контакту /RD оперативной памяти.
  • Последовательный интерфейс с таймером, как генератором скорости передачи.
  • От 1 до 5 выводов порта, если вы используете аппаратную адресацию банков памяти (2-32 банков). См. пример аппаратных схем в руководстве 8051 Utilities User's Guide в разделе «Bank Switching Configuration» для более подробной информации. Все эти банки памяти должны иметь структуру фон Неймана!
  • Дополнительные 6 байт стека (IDATA) в программе пользователя для тестирования.

Печатная плата, верх, дорожки и надписи:



Печатная плата, верх, монтаж и спецификации:

Печатная плата, низ, дорожки и надписи:


Печатная плата, низ, монтаж и спецификации:


Приложены:
AT89C51ED2.zip — печатка в lay6;
Circuit.jpg — увеличенная схема;
SubMobule.jpg — увеличенная распиновка разьемов;

Наконец-то допинал свой программатор AT89C2051. Стопятисотый, зато в виде плагина к пинборду :)

Собрать требуется только несложный адаптер, надевающийся на пины МК на пинборде. Дополнительно требуется питание +12В от внешнего источника (впрочем, если придавить к земле пин PD6, то на PD7 появится сигнал F=31кГц D=60%, который можно использовать для построения step-up'а, при этом PD6 можно юзать для ON/OFF стабилизации). Я запитываю от ЛБП, подключенного на клеммник 5V пинборда. Главное — не посадить перемычку питания всей платы от этого источника :)
Адаптер на сейчас работает криво и подает 10В вместо 12, надо оптимизировать схему. Но пока и так работает.


Хотя на фотке целевой МК припаян — это только для надежности контакта при дебаге, вообще-то рассчитано на прикладывание МК к падам и прижимание зажимом для бумаги. Подробнее тут, второе видео, начиная с 6-й минуты. Лудить лучше в сплаве Розе, чтобы пады были плоские и микра не сваливалась (собственно, первые 6 минут того же видео). Под DIP корпус запаяна обычная панелька, только превращенная в «SMD» отгибанием ножек.

Перемычки на LED1 и LED2 опциональны — программатор ими иногда моргает. Не всегда, когда надо, правда) Перемычка на кнопку А не нужна — у меня это кнопка входа в бут (родной запарил тормозить 4 секунды перед запуском проги). А вот замкнуть переключатели UART надо. Питание — USBH, 5V.

Общается программатор через COM-порт, и вообще-то протокол разработан с прицелом на работу через терминалку (кратенькое описание в Protocol.txt), но потом мне взбрендило написать оболочку-программатор.


Архив документации в аттаче — прошивка (.hex и исходники на mikroPascal for AVR, компилировал в v. 4.60), плата адаптера (SLayout 5), оболочка с исходниками (Delphi 7). Опять быдлокод, да) На МК привычные паттерны оказались малоприменимы, со всеми вытекающими, а оболочку писал наскоро и лениво, так что она изобилует хардкодом и прочей дрянью.
Версия RC1. Оно работает, но без гарантий, так что кнопку Verify желательно юзать.

P.S. Ах да, совсем забыл. В прошивке есть калибровка генератора (автоматически М16 калибруется под 1МГц, а в пинборде 8МГц). Чтобы она работала — калибровочные байты надо прочитать программатором и зашить в последние 4 ячейкм EEPROM. Либо оставить их пустыми (0xFF) — иначе прошивка откалибрует генератор незнамо чем. Впрочем, еще можно закомментировать вызов CalibrateRC в коде (либо загнать туда константу от своего экземпляра меги хардкодом).

Читайте также: