AFON // радиотехник affonya@mail.ru
← все инструменты

Симулятор 8051 (MCS-51)

Пишете на ассемблере — программа собирается и выполняется прямо в браузере: регистры, внутреннее ОЗУ, порты со светодиодами и кнопками, таймеры, последовательный порт с терминалом, прерывания. Пошагово или на полной скорости, с точкой останова и подсчётом машинных циклов.

Процессор

Порты

Щёлкните по разряду — он переключится: так задаются входы (кнопки).

Регистры специальных функций

Последовательный порт


          

Загрузка готовой прошивки

Внутреннее ОЗУ 00…7F

Как пользоваться

  1. Выберите пример или напишите свою программу. Кнопка Собрать (или Ctrl+Enter) переводит текст в машинный код; при ошибке будет указан номер строки.
  2. Пуск запускает выполнение, Шаг выполняет одну команду, +10 — десять. Справа обновляются регистры, порты и содержимое памяти.
  3. Разряды портов можно переключать мышью — так имитируются кнопки и датчики на входах.
  4. В поле «останов на адресе» впишите адрес в шестнадцатеричном виде: выполнение остановится, когда счётчик команд дойдёт до него.
  5. Всё, что программа отправит в последовательный порт, появится в терминале; поле ввода отправляет строку в приёмник.

Что поддерживается

УзелПодробности
Набор командПолный набор MCS-51: пересылки, арифметика с флагами CY, AC, OV и признаком чётности, умножение и деление, десятичная коррекция, логика, сдвиги, битовые операции, все переходы, вызовы, стек, MOVX и MOVC
Память64 КБ памяти программ, 128 байт внутреннего ОЗУ с битовой областью 20H…2FH, четыре банка регистров, 64 КБ внешнего ОЗУ через DPTR и @Ri
ПортыP0…P3, побитная адресация, переключение разрядов мышью для имитации входов
ТаймерыТаймер 0 и таймер 1, режимы 0, 1 и 2 с автоперезагрузкой, флаги TF0 и TF1, биты запуска TR0 и TR1
Последовательный портРежим 1 со скоростью от таймера 1, флаги TI и RI, приём и передача занимают реальное время в машинных циклах
ПрерыванияВнешние 0 и 1, таймеры 0 и 1, последовательный порт; векторы 03H, 0BH, 13H, 1BH, 23H, биты IE и возврат по RETI
АссемблерМетки, ORG, EQU, BIT, DB, DW, DS, END, имена регистров и битов, числа в форматах 25H, 0x25, 11011b, 'A'

Точность модели

Кодировка команд сверена с настоящим ассемблером sdas8051 из пакета SDCC: 116 команд, охватывающих все группы набора, собраны обоими ассемблерами и сравнены байт в байт — расхождений нет. Поведение процессора проверяется 55 тестами: флаги сложения и вычитания, десятичная коррекция, умножение и деление с остатком, признак чётности, переключение банков регистров, битовая область ОЗУ, стек и вложенные вызовы, таблицы через MOVC, внешнее ОЗУ, переполнение таймеров в двух режимах, приём и передача по UART, вызов обработчика прерывания и возврат.

Время считается в машинных циклах: команда занимает от одного до четырёх циклов, а цикл равен двенадцати тактам кварца — отсюда пересчёт в миллисекунды в панели процессора. Задержки, написанные циклами DJNZ, дают ровно те же числа, что и на настоящем кристалле.

Чего нет

Не моделируются: таймер 2 и расширенное ОЗУ старших моделей (8052), режимы 0, 2 и 3 последовательного порта, работа портов на физическом уровне (подтяжки, нагрузочная способность, режим «квази-двунаправленного» входа), сторожевой таймер и режимы пониженного потребления, а также внешняя память программ и мультиплексирование шины на P0 и P2. Точки останова задаются по адресу, а не щелчком по строке.

Частые вопросы

Почему при записи в порт светодиод «горит» нулём?

Так устроена схемотехника 8051: выход притягивает линию к земле, поэтому светодиод подключают анодом к питанию, и активный уровень получается нулевым. Отсюда и привычная запись CLR P1.0 для включения.

Как получить нужную задержку?

Считайте циклы: команда DJNZ занимает два машинных цикла, значит вложенный цикл на 250 повторов даёт 500 циклов, то есть 500 микросекунд при кварце 12 МГц. Панель процессора показывает и циклы, и время — можно проверить прямо на ходу.

Можно ли загрузить готовую прошивку?

Да, вставьте содержимое HEX-файла в поле загрузки — программа разберёт формат Intel HEX и проверит контрольные суммы. Исходник при этом не нужен, но и подсветки строк не будет.

Чем 8051 отличается от AVR и PIC?

Это архитектура начала восьмидесятых с аккумуляторной моделью, битовой адресацией и внешней шиной. Ядро оказалось настолько удачным, что до сих пор живёт внутри сотен современных микросхем — от радиомодулей до контроллеров USB.

Смотрите также

Реклама Ремонт компьютеров и ноутбуков в Москве — help-user.ru: диагностика, чистка, апгрейд, восстановление данных.