Какие ключевые особенности делают PIC16F873A популярным выбором для разработчиков. Как его производительность и периферийные устройства упрощают разработку встраиваемых систем. Почему PIC16F873A является отличным вариантом для обучения программированию микроконтроллеров.
Архитектура и ключевые характеристики PIC16F873A
PIC16F873A — это высокопроизводительный 8-битный микроконтроллер семейства PIC16 от Microchip Technology. Он построен на основе RISC-архитектуры и обладает рядом впечатляющих характеристик:
- 8-битное ядро с тактовой частотой до 20 МГц
- 7 КБ флэш-памяти программ
- 368 байт оперативной памяти (RAM)
- 256 байт энергонезависимой памяти данных EEPROM
- 22 линии ввода/вывода общего назначения
- Набор из 35 инструкций
Такое сочетание параметров делает PIC16F873A мощным и гибким решением для широкого спектра встраиваемых приложений. Но чем конкретно этот микроконтроллер выделяется на фоне аналогов?
Производительность и эффективность PIC16F873A
Одним из ключевых преимуществ PIC16F873A является его высокая производительность при низком энергопотреблении. Как это достигается?

- Большинство инструкций выполняются за один машинный цикл
- Пиковая производительность достигает 5 MIPS при тактовой частоте 20 МГц
- Поддержка режима пониженного энергопотребления (Sleep)
- Типовое потребление тока всего 1.6 мА при 5В питания
Такие показатели позволяют создавать на базе PIC16F873A высокопроизводительные системы с автономным питанием. А как обстоят дела с периферийными устройствами?
Богатый набор периферийных модулей
PIC16F873A оснащен широким набором встроенных периферийных устройств, что значительно упрощает разработку сложных систем:
- 10-битный АЦП с 5 входными каналами
- Два модуля PWM
- Три таймера (8 и 16-битные)
- Модули USART, SPI, I2C для организации связи
- Аналоговые компараторы
- Сторожевой таймер WDT
Такой богатый функционал позволяет реализовать большинство типовых задач без использования внешних компонентов. Но насколько просто программировать PIC16F873A?
Удобство программирования и отладки
Microchip предоставляет разработчикам мощные инструменты для работы с PIC16F873A:

- Бесплатная среда разработки MPLAB X IDE
- Компилятор XC8 для программирования на C
- Поддержка внутрисхемного программирования и отладки
- Большое количество примеров кода и документации
Это делает процесс разработки максимально удобным даже для начинающих. Но в чем преимущества PIC16F873A для обучения?
PIC16F873A как платформа для обучения
PIC16F873A часто используется в образовательных целях благодаря ряду факторов:
- Доступная цена и широкая распространенность
- Простая для понимания RISC-архитектура
- Возможность программирования как на ассемблере, так и на C
- Наличие недорогих отладочных плат
- Большое сообщество и обилие учебных материалов
Это позволяет студентам и любителям быстро освоить основы микроконтроллерной техники. Но какие реальные проекты можно реализовать на PIC16F873A?
Примеры применения PIC16F873A
Благодаря своей универсальности, PIC16F873A находит применение в самых разных областях:
- Системы сбора данных и управления
- Бытовая электроника
- Автомобильная электроника
- Системы безопасности
- Медицинское оборудование
- Робототехника
Такая широкая сфера применения делает навыки работы с PIC16F873A крайне востребованными. Но как этот микроконтроллер соотносится с современными тенденциями?

PIC16F873A в контексте современных технологий
Несмотря на то, что PIC16F873A был выпущен достаточно давно, он остается актуальным и сегодня:
- Низкое энергопотребление актуально для IoT-устройств
- Простота интеграции подходит для быстрого прототипирования
- Невысокая стоимость важна для массового производства
- Проверенная временем надежность критична для ответственных применений
Это позволяет PIC16F873A успешно конкурировать даже с более современными микроконтроллерами. Но каковы перспективы его дальнейшего использования?
Будущее PIC16F873A
Хотя появляются все более мощные микроконтроллеры, PIC16F873A, вероятно, еще долго будет оставаться востребованным благодаря:
- Огромной базе существующего кода и наработок
- Совместимости с новыми моделями семейства PIC16
- Постоянному совершенствованию инструментов разработки от Microchip
- Сохраняющейся потребности в простых и недорогих решениях
Это делает изучение PIC16F873A отличным вложением времени для разработчиков встраиваемых систем. Но с чего начать знакомство с этим микроконтроллером?

Начало работы с PIC16F873A
Для тех, кто хочет освоить PIC16F873A, можно рекомендовать следующие шаги:
- Изучить документацию на микроконтроллер (даташит)
- Установить среду разработки MPLAB X IDE
- Приобрести недорогую отладочную плату
- Пройти онлайн-курсы или изучить учебные пособия по программированию PIC
- Присоединиться к сообществам разработчиков для обмена опытом
Такой подход позволит быстро войти в мир разработки на базе PIC16F873A и начать создавать собственные проекты. Но какие альтернативы стоит рассмотреть?
Альтернативы PIC16F873A
Хотя PIC16F873A обладает множеством достоинств, в некоторых случаях могут подойти другие варианты:
- AVR-микроконтроллеры от Atmel (теперь Microchip) — популярны в любительских проектах
- STM32 на базе ARM Cortex-M — более мощные, но и более сложные
- ESP32 — со встроенным Wi-Fi для IoT-применений
- Новые модели семейства PIC — с расширенным функционалом
Выбор конкретного микроконтроллера зависит от требований проекта и предпочтений разработчика. Но в чем главные преимущества именно PIC16F873A?

Запрашиваемая страница не найдена!
- Главная
- Запрашиваемая страница не найдена!
Категории
- УФ-ППЗУ (Eprom)
- Flash, Eeprom, Firmware Hub
- Serial Eeprom, Serial Flash
- Static RAM
- Микроконтроллеры Atmel
PIC-микроконтроллеры Microchip- Микроконтроллеры Winbond/Nuvoton
- Микроконтроллеры NXP/Philips
- Микроконтроллеры Texas Instruments
- Микроконтроллеры ST Microelectronics
- Устройства программирования микросхем (переходники, клипсы, УФ-приборы), прочие приборы, инструмент
- Макетные платы, текстолит
- Панели, разъёмы, переключатели, герконы, кабель
-
Микросхемы импортные для ремонта (TDA, AN, LA, STR и пр.
)
- Логика
- Компоненты Analog Devices
- Компоненты Maxim/Dallas
- Компоненты FTDI
- Компоненты International Rectifier
- Светодиоды
- Транзисторы
- Диоды, мосты, стабилитроны
- Тиристоры, симисторы
- Оптоэлектроника
- Кварцы, генераторы
- AC/DC преобразователи
- Магниты
- Импортные выводные (=К50-35, К50-24) и SMD электролитические конденсаторы, ионисторы
- Импортные выводные керамические конденсаторы (=К10-17Б, К15-5, КД-2)
-
Импортные выводные плен.
полиэстер. конденсаторы (=К73-9)
- Чип конденсаторы керамические
- Чип танталовые конденсаторы
- Резисторы подстроечные
- Чип резисторы
- Резисторы выводные МЛТ-0,25 (С1-4), МЛТ-1, МЛТ-2 (С2-33)
- Звукоизлучатели
- Реле
- Аккумуляторы свинцово-кислотные герметизированные
- Тюнеры
- Прочее
- Товары под заказ
PIC16F873A-I/SP PDIP-28
Высокопроизводительный RISC-процессор:
• Всего 35 инструкций из одного слова для изучения
• Все одноцикловые инструкции, за исключением программных ветвей, которые являются двухтактными.
• Рабочая скорость: постоянный ток — тактовый сигнал 20 МГц, входной постоянный ток — цикл команд 200 нс.
• До 8K x 14 слов флэш-памяти программ, до 368 x 8 байт памяти данных (RAM), до 256 x 8 байт памяти данных EEPROM
• Распиновка совместима с другими 28-контактными или 40/44-контактными микроконтроллерами PIC16CXXX и PIC16FXXX.
Периферийные функции:
• Timer0: 8-битный таймер / счетчик с 8-битным предварительным делителем
• Timer1: 16-битный таймер / счетчик с предварительным делителем, может увеличиваться во время сна через внешний кристалл / часы
• Timer2: 8-битный таймер / счетчик с 8-битным регистром периода, предварительным делителем и постделителем
• Два модуля захвата, сравнения, ШИМ
— Захват 16 бит, макс. разрешение 12,5 нс
— Сравнение 16 бит, макс. разрешение 200 нс
— ШИМ макс. разрешение 10 бит
• Синхронный последовательный порт (SSP) с SPI (ведущий режим) и I2C ™ (ведущий / ведомый)
• Универсальный синхронный асинхронный приемный передатчик (USART / SCI) с обнаружением 9-битного адреса
• Параллельный подчиненный порт (PSP) — ширина 8 бит с внешними элементами управления RD, WR и CS (только 40/44 контактов)
• Схема обнаружения пониженного напряжения для сброса пониженного напряжения (BOR)
Аналоговые функции:
• 10-битный, до 8-канальный аналого-цифровой преобразователь (A / D)
• Сброс при пониженном напряжении (BOR)
• Модуль аналогового компаратора с:
— Два аналоговых компаратора
— Программируемый модуль опорного напряжения на кристалле (VREF)
— Программируемое мультиплексирование входов от входов устройства и внутреннего опорного напряжения
— Выходы компаратора доступны извне
Специальные возможности микроконтроллера:
• 100000 циклов стирания / записи Типичная расширенная флэш-память для программ
• 1000000 циклов стирания / записи, типичная память EEPROM данных
• Хранение данных в EEPROM> 40 лет
• Самостоятельное перепрограммирование под управлением программного обеспечения
• Внутрисхемное последовательное программирование ™ (ICSP ™) через два контакта
• Последовательное внутрисхемное программирование с однополярным питанием 5 В
• Сторожевой таймер (WDT) с собственным встроенным RC-генератором для надежной работы
• Программируемая защита кода
• Энергосберегающий спящий режим
• Выбираемые параметры осциллятора
• Внутрисхемная отладка (ICD) через два контакта
CMOS технология:
• Маломощная, высокоскоростная технология Flash / EEPROM.
• Полностью статичный дизайн
• Широкий диапазон рабочего напряжения (от 2,0 В до 5,5 В)
• Коммерческие и промышленные температурные диапазоны
• Низкое энергопотребление
Бренд microchip
По наличию 1000000 штук
Ускоренный курс программирования PIC16F873A
Ускоренный курс программирования PIC16F873AАвтор: Патрик Бойд. Группа 4.
Микроконтроллеры серии PIC обеспечивают легкий вес. альтернатива платам ARM
, обычно используемым в лабораториях CMPE490. Вот несколько советов, которые помогут получить начал с ПОС.
Приступая к работе
Программатор
Чтобы иметь возможность загружать код на PIC, вам нужно что-то, что может
запрограммировать это. Для микроконтроллеров серии PIC16
почти все имеющиеся в продаже
программы совместимы.
В нашем проекте мы использовали программатор PicStart Plus. Программатор фирмы Microchip.
ИДЕ
другим требованием является использование IDE. Microchip также предоставляет IDE
в виде библиотек для каждой из моделей PIC
, доступных бесплатно на их веб-сайте под названием MPLAB
Once
у вас запущена IDE, перейдите в меню Configure и выберите Select
Устройство. Затем выберите PIC
, который у вас есть, из раскрывающегося меню в левом верхнем углу. Этот экран
покажет вам, если программист
, который у вас есть, совместим с PIC, который вы используете. Зеленый означает полностью
совместим, желтый — бета-поддержка
, красный — отсутствие совместимости.
После того, как вы выбрали устройство, перейдите в «Программист»> «Выбрать программатор». и выберите программатор из списка.
И последнее, о чем нужно убедиться, когда вы начинаете новый проект.
Когда вы создаете новый файл сборки, MPLAB
не добавляет этот файл в проект автоматически, поэтому убедитесь, что вы
вручную сделать это в меню навигатора проекта.
Существует также очень хороший шаблон кода, доступный в EE400/401.
Веб-сайт.
Когда ваш код будет готов, выберите Programmer>Enable Programmer to
подключить программатор. При использовании подключения USB к Serial
убедитесь, что вы настроили подключение таким образом, чтобы
«Управление потоком:» установлено на «Аппаратное обеспечение», а флажок
«Использовать буферы FIFO» снят. После подключения к
программист, просто нажмите кнопку «Программировать»
в правом верхнем углу, чтобы запрограммировать и проверить PIC.
Полезные свойства MPLAB
MPLAB делает для вас ряд вещей, которые значительно облегчают жизнь, когда
программирование PIC. Прежде всего, это
, упакованные с библиотеками для каждой из моделей PIC, которые может использовать MPLAB.
программировать, а это почти все они.
Эти библиотеки в основном содержат #define для всех специальных
Регистры и управляемые биты в них.
Поэтому, если вы хотите прочитать бит в регистре STATUS, вам не нужно
нужно искать адрес памяти, можно
просто используйте его имя.
Ассемблер MPASM, который использует MPLAB, также предоставляет множество полезных ассемблеров.
директивы. Я расскажу о некоторых из
более полезных здесь:
этикетка банка — используется для
сгенерировать код для переключения текущего банка памяти на любой
содержит
метку регистра.
__config expr — используется для настройки
биты конфигурации PIC. Есть много разных вариантов
которые все перечислены
в файле библиотеки.
выражение данных — Эта функция
используется для хранения шестнадцатеричного значения в текущей ячейке памяти программы.
Обычно предваряется директивой ORG
для настройки правильного отображения памяти. Также имеет аналогичные выражения, такие как da или dw для настройки данных различных
типы.
udata и udata_shr — используется с командой res, эти резерв и имя
регистры для определенного банка памяти и общий
для всех банков памяти соответственно.
org и код — Используется для установки местоположения
последующий код в памяти. Команда code также позволяет
укажите имя
для этого блока кода.
pagesel — Аналогичен банкселю, но используется для выбора страница памяти используется для команд goto и call.
res expr- Используется для резервное количество регистры.
Основы программирования PIC16
PIC16F873A — это 8-разрядный процессор со всеми 256 байтами памяти.
адресуемая память, состоящая из регистров. Однако он имеет четыре отдельных банка памяти по
, между которыми можно переключаться, устанавливая биты.
в регистре STATUS (или используя намного более простой банксел 9директива 0002). Очень важно всегда перепроверять
в каком банке памяти вы находитесь, прежде чем пытаться получить доступ к регистру
. Точно так же код операции для вызова
и перейти к инструкциям
недостаточно долго, чтобы адресовать всю программную память, поэтому регистр STATUS
также имеет два бита PCLATH0:1, которые определяют, какая страница памяти
выбирается при вызове или переходе. Так что еще раз
дважды проверьте, на какую страницу памяти вы указываете, и используйте pagesel для изменения, если это необходимо.
Все линии ввода-вывода на PIC напрямую доступны через регистры.
16F873A имеет 3 группы контактов ввода-вывода PORTA, PORTB и PORTC.
Каждый контакт на этих портах может быть настроен независимо как вход или
выход. Это делается в соответствующем регистре TRISX. Где
1 соответствует входу, а 0 — выходу.
Итак, например, если бы я хотел вывести высокое значение на RA0, я бы использовал следующий код:
банксель
TRISA КБФ ТРИСА, 0 ;; Настройте PORTA pin0 как выход bankel PORTA movlw 0x01 movwf ПОРТ ;; Запишите 0x01 в PORTA, установив высокий уровень на выводе 0 |
Вам может быть интересно, почему я не использовал bsf, чтобы просто установить единственный контакт ПОРТ высокий. Это потому что бсф является одной из многих
операций чтения-модификации-записи, которые использует PIC. Поскольку контакты PORTA могут быть входными или выходными контактами и могут быть изменены
во время выполнения, результаты операции RMW могут быть непредсказуемыми, в этом случае лучше просто записать целый байт
в реестр.

Аналогичная операция чтения из линий ввода/вывода:
bankel
TRISB movlw 0xFF movwf ТРИСБ ;; Настройте все контакты PORTB как входы bankel PORTB movf PORTB, Вт ;; Переместить содержимое PORTB в аккумулятор |
Обратите внимание на порты ввода-вывода. У нас возникли проблемы с использованием контакта RA4 для что-либо. Было небольшое упоминание в техпаспорте RA4
не работает должным образом на некоторых моделях PIC, и для нас мы не могли управлять это вообще высоко.
PIC Simulator
Одним из основных недостатков использования программатора PICStart Plus является
что он не поддерживает отладку программного обеспечения PIC.
Чтобы исправить это, я использовал PIC Simulator IDE. Тот, который я использовал,
доступна для бесплатной ограниченной пробной версии от OshonSoft.
Этот симулятор поставляется со встроенным ассемблером, но многие
ассемблерные директивы, доступные в MPLAB, не работают в 9Ассемблер симулятора 0002. Однако вы можете просто собрать код в
MPLAB и загрузите шестнадцатеричный файл прямо в симулятор.
главный экран симулятора PIC показывает значение всех регистров,
программный счетчик и аккумулятор, последняя и следующая инструкции и
Прошло
времени. Значения любого из SFR можно изменить, нажав
на определенных битах, а GPR можно изменить, щелкнув и
ввод
нового значения. На этом экране вы также можете изменить скорость
моделирование, выполнять инструкции и изменять различные параметры, такие как
как часы
скорость процессора.
На этом экране отображается текущая позиция ПК в коде и
позволяет поставить точку останова в коде.
Установка и сброс точек останова производится щелчком по нужному
строка кода. На этом этапе часто проще
перейти в View>Program Memory в MPLAB, чтобы получить список многих программ.
более легкая для чтения версия кода, с памятью на
адреса.
Поскольку в нашем проекте использовалась программная память, это окно было очень важно
для нас. Однако, даже если вы не используете программу
памяти для хранения, этот экран полезен для изменения инструкций
хранится в памяти программы, если вы хотите что-то изменить
немного не пересобирая проект.