Минималистичная x51 система на базе AT89S51/AT89S52. Позволяет загружать программу с ПК в ОЗУ и затем выполнять ее. Внутренняя память контроллера содержит только начальный загрузчик, поэтому транзитные программы загружаются и выполняются по адресу 2000h, однако все прерывания перенаправлены в эту же область, поэтому доступны для использования. Для загрузки используется интерфейс RS232, также работоспособный с USB через обычные переходники COM-USB для компьютеров, не имеющих аппаратного COM порта. Система может использоваться как для аппаратной отладки программ, так и как многофункциональное периферийное устройство для разовых задач. Диалог с системой можно вести как через устройства, подключаемые к его портам, так и через последовательный порт, для чего написан упрощенный монитор. Поскольку порты 0 и 2 заняты обслуживанием памяти, для работы доступны порты 1 полностью и порт 3 частично (сигналы WR, RXD и TXD используются для внутренних целей), однако для большинства задач этого достаточно.
Устройство собрано на плате из ДВП, цепи разведены лакированым проводом. Схема и встроенное ПО не зависят от применяемого микроконтроллера (применялись AT89S51 и AT89S52, возможно использование других совместимых). Если не планируется использовать порт RS232, преобразователь уровней и переключатель RXD можно не устанавливать. Также на плате выведен отдельно разъем ISP, который на схеме не показан. Обращение к памяти: запись как во внешнюю память (WR), чтение - только как из программной памяти (PSEN). Чтение как из внешней памяти (RD) не используется для упрощения схемы и освобождения одного вывода микроконтроллера для системного светодиода.
Для написания всего ПО использовался ассемблер fasmg и среда WinAsm Studio. Для загрузки программ в микроконтроллер используются собственные загрузчики, доступные как для среды Linux, так и для Windows (64 bit).
Возможно использование языка C для написания программ: пример на компиляторе uC51 от Wickenhäuser Elektrotechnik. При этом нельзя использовать модель large, использовать внешнюю память из программы можно только при помощи трюков.
Прошивка (hex+asm) (8051x.inc)Для использования устройства его нужно подключить к ПК и сбросить. Затем запускается загрузчик на ПК, которому в качестве параметра передается бинарный файл, а также номер COM-порта (для Windows) или устройство (для Linux). В процессе загрузки индикатор на устройстве загорается, а по ее окончанию начинает мигать. Теперь можно нажать кнопку "Start" - начинает выполняться программа пользователя, индикатор гаснет. Во время работы кнопка "Start" становиться недоступной, а индикатором можно пользоваться в своих целях. Можно перезапустить программу пользователя - для этого нужно нажать сброс удерживая кнопку "Start". Загрузку можно интегрировать в среду разработки для повышения комфорта в работе. Загружаемый файл должен быть бинарным.
Монитор не является самостоятельным приложением, а служит шаблоном для создания интерактивных программ. Для этого в нем предусмотрены команды "T" и "I", содержимое которых можно легко переопределить. Сам набор команд также легко расширяется. Шаблон содержит минимальный набор необходимых функций: выдача сообщений в порт из памяти команд и из внутренней памяти, ввод строки, преобразование строки в 32-битное целое беззнаковое число (десятичное или шестнадцатиричное), преобразование 32-битного числа в строку, вывод байтов в шестнадцатиричном виде. Имеется возможность как просматривать, так и модифицировать память программ, а также запускать подпрограммы по произвольному адресу. Монитор ведет исключительно символьный обмен, редактирование строки возможно только клавишей BS (<-), предусмотрен выход по клавише "ТАВ" (чтобы не связываться с "ESC"). Для работы с Монитором используется программа PuTTY. Параметры обмена: 9600, 8 бит, проверки четности нет, 1 стоп-бит, принудительный CR на LF, локальное эхо включено.
МониторИзначально я использовал самодельный программатор STK-200 через параллельный порт. В дальнейшем внезапно выяснилась грустная история с программатором USBISP, линуксом и AT89S51, в результате срочно была написана программа, позволяющая записать AT89S51 при помощи данного устройства. Она не позволяет считать память контроллера, однако запись производится с верификацией. Для использования в устройство загружается вначале образ программатора, запускается, а затем тем же путем загружается образ, который уже записывается в микроконтроллер. Состояние программатора индицируется режимом мигания светодиода. Для повторения записи устройство необходимо сбросить с нажатой кнопкой "START". Подробности внутри.
Программатор