🛒 Arduino, ESP32 и модули
Microchip PIC16F84: Mikroprosessorların qədim dastanı
4 Ч НАЗАДEmbedded

Microchip PIC16F84: древняя сага об одном 8‑битном микроконтроллере

Как PIC16F84 с крошечными 1K слов Flash стал «народным» микроконтроллером конца 90‑х и повлиял на культуру, из которой выросли Arduino, STM32 и ESP32.

6 сентября 2026 г.4 мин чтения15 теги

Если спросить у инженеров старшего поколения, с какого микроконтроллера они начинали, очень часто прозвучит ответ: Microchip PIC16F84. Сейчас он выглядит архаично, но в конце 90‑х именно этот чип сделал embedded ближе к студентам, радиолюбителям и небольшим фирмам.

Исторический контекст: от OTP к Flash

В первой половине 90‑х Microchip успешно продавала серии PIC16C5x и PIC16C84. Они были основаны на OTP‑ и EPROM‑памяти:

  • OTP (One‑Time Programmable) — однократная запись, ошибка в прошивке = выброшенный корпус.
  • EPROM — стирание ультрафиолетом по 15–20 минут, отдельный лоток, стеклянное окошко в корпусе.

Для массового производства это ещё было терпимо, но для обучения и прототипирования — кошмар. Параллельно Atmel уже готовила первые AVR с Flash, а рынок 8051‑сов всё ещё жил на EPROM и OTP.

На этом фоне Microchip выпускает PIC16F84 — по сути модернизированный PIC16C84, в котором программная память переведена на Flash‑технологию. Теперь микроконтроллер можно было перепрограммировать за секунды, без UV‑ламп и выбрасывания чипов.

Технический портрет в масштабе эпохи

По современным меркам характеристики скромные, но для тех лет баланс был очень удачным:

  • Архитектура: 8‑битная Harvard RISC
  • Набор команд: около 35 инструкций
  • Тактовая частота: до 20 МГц внешнего генератора (ядро работает на Fosc/4, до ~5 MIPS)
  • Программная память: порядка 1K × 14‑битных слов Flash
  • RAM: 68 байт (банковая организация)
  • EEPROM: 64 байта энергонезависимой памяти данных
  • Ввод/вывод: примерно 13 линий I/O (PORTA и PORTB) в корпусе DIP‑18
  • Таймеры: 1×8‑битный Timer0 с делителем частоты
  • Watchdog: встроенный сторожевой таймер
  • Техпроцесс: ориентировочно 0,8 мкм CMOS
  • Транзисторов: десятки тысяч (точное число Microchip не публиковала)

Ключевое отличие — именно Flash‑память программы. В сегменте дешёвых 8‑битных микроконтроллеров это было ощутимым преимуществом: цикл «исправил код → перепрошил → проверил» стал занимать минуты, а не часы.

Почему PIC16F84 стал легендой

Иконой он стал не из‑за мощности, а из‑за сочетания инженерных и «социальных» факторов:

  • Доступность. Его можно было купить и у официальных дистрибьюторов, и на радиорынках, и по почте.
  • Корпус DIP‑18. Вставил в макетку — и уже можно собирать схемы без собственной платы.
  • Простая, но не примитивная архитектура.
  • Маленький набор команд (35 инструкций),
  • file registers и банковая организация памяти,
  • отдельные регистры TRIS для направления портов.
  • Море литературы. В конце 90‑х и начале 2000‑х журналы и книги массово использовали PIC16F84 как базовый пример: от «мигающего светодиода» до охранных сигнализаций и электронных замков.
  • Дешёвые программаторы. Самодельные программаторы к LPT‑порту, позже — простые in‑circuit решения сделали входной порог очень низким.

Для студентов это был первый микроконтроллер, где while(1) в C или пара строк ассемблера превращалась в реальный мигающий светодиод на PORTB.

Болевые точки: чего в нём не хватало

Со временем ограничения PIC16F84 стали всё заметнее:

  • Нет аппаратных UART, SPI, I²C. Любой протокол — только битбангом, с нагрузкой на CPU.
  • Мизерная память. 1K слов Flash и 68 байт RAM быстро упирались в потолок при реализации протоколов, меню, сложной логики.
  • Банки памяти. Переключение банков через бит RP0 регистра STATUS — классический источник «таинственных» багов.
  • Нет АЦП и ШИМ. Для работы с аналоговыми датчиками и двигателями часто приходилось брать более старшие PIC или городить внешнюю обвязку.

Неудивительно, что Microchip довольно быстро вывела на сцену наследников: PIC16F628, PIC16F628A, PIC16F88 и др. Они добавили UART, больше RAM/Flash, иногда АЦП и компараторы, при сопоставимой цене. В новых разработках именно они вытеснили 16F84.

Невидимое влияние: от PIC к Arduino и STM32

Сегодня большинство новичков начинают сразу с Arduino (ATmega328P), STM32 Nucleo, Blue Pill или ESP32. Но культура, в которой выросли эти платы, во многом была сформирована ещё PIC16F84:

  • «Сначала мигание» — традиция начинать освоение любой платформы с простого blink‑проекта уходит корнями в PIC‑ и 8051‑школу.
  • Идея доступного микроконтроллера для каждого. DIP‑корпус, макетная плата, журнал с пошаговой инструкцией — тот же дух, который позже принял форму Arduino‑плат.
  • Инженерное мышление через регистры. Привычка сначала открыть datasheet, найти карту регистров и самому инициализировать порты, таймеры, watchdog — для многих она началась именно с PIC.

Немало разработчиков, которые затем проектировали Arduino‑совместимые платы, STM32‑модули и ESP32‑«бублики», в молодости отлаживали свои первые проекты на 16F84 и его близких родственниках.

Чему нас до сих пор учит PIC16F84

С практической точки зрения сегодня лучше выбирать современные PIC16F1xxx, PIC18, AVR или ARM Cortex‑M0+. Но история PIC16F84 по‑прежнему ценна:

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

Если сегодня вы ставите на плату STM32, RP2040 или ESP32 и запускаете очередной blink, помните: когда‑то ту же роль играл маленький PIC16F84 в корпусе DIP‑18. И значительная часть нашей нынешней embedded‑культуры выросла из тех времён, когда этот чип был королём учебных лабораторий и радиолюбительских мастерских.