Программирование микроконтроллеров PIC18 на языке C: пошаговое руководство
Как запрограммировать микроконтроллер PIC18 на языке C. Пошаговое руководство с иллюстрациями
Что такое программирование микроконтроллера?
Программирование микроконтроллера — это процесс написания кода для выполнения специфических задач в специализированном ПО. Существует множество сред разработки (IDE) для написания, анализа, тестирования и отладки кода для микроконтроллеров и микросхем. В этом руководстве мы разберем процесс программирования микроконтроллера PIC18 на языке C — наиболее широко используемом языке для 8-битных и 16-битных PIC (помимо ассемблера).
Классификация микроконтроллеров PIC по разрядности:
- 8-битные PIC: серии PIC10, PIC12, PIC16, PIC18
- 16-битные PIC: серии PIC24, dsPIC30, dsPIC33
- 32-битные PIC: серия PIC32

Как прошить микроконтроллер (загрузка программы)?
Прошивка — это процесс переноса скомпилированной программы (hex-файла) из компилятора в память микроконтроллера. Компилятор преобразует код на C/ассемблере в hex-файл, содержащий инструкции, понятные микроконтроллеру.
Для прошивки нужен программатор (аппаратное обеспечение), который подключается к ПК через USB или COM-порт и записывает hex-файл в память чипа. После этого микроконтроллер начинает выполнять заложенные в нем функции.
Связанная статья: Разновидности микроконтроллеров
Программирование PIC18 на C в среде MikroC
Целевой контроллер: PIC18F452
В качестве примера рассмотрим популярный микроконтроллер серии PIC18 — PIC18F452. Это 8-битный МК в корпусе на 40 выводов с 32 КБ Flash-памяти, тактовой частотой до 40 МГц. Он способен источать/поглощать до 25 мА на выводе (можно управлять светодиодами без транзисторов), имеет 3 внешних прерывания, два 16-битных и один 8-битный таймер, модули захвата и сравнения, встроенный АЦП, а также интерфейсы USART, I2C, 1-Wire и параллельный порт. Это отличный выбор для начинающих и профессионалов.
Среда разработки: MikroC PRO for PIC
Мы будем использовать MikroC PRO for PIC — мощную IDE с обширными встроенными библиотеками, удобным интерфейсом и калькуляторами (перевод hex/dec/bin). Синтаксис проще, чем в MPLAB X, а готовые библиотеки (задержки, LCD, UART, SPI и др.) экономят массу времени.
Важно: MikroC — платный компилятор. Бесплатной альтернативой является MPLAB X IDE с компилятором XC8 от Microchip, также имеющий множество бесплатных библиотек.
Дальнейшее руководство предполагает, что вы установили MikroC и имеете базовые знания C.
Связанная статья: Что такое Arduino и как его программировать?Создание нового проекта в MikroC
- Шаг 1: Запустите MikroC (ярлык на рабочем столе). Откроется стартовое окно.


- Шаг 2: В меню выберите Project → New Project.

- Шаг 3: В мастере создания проекта нажмите Next.

- Шаг 4: Выберите целевой МК (PIC18F452), задайте тактовую частоту (например, 8 MHz или 20 MHz), имя проекта и папку для сохранения. Далее нажимайте Next во всех окнах до завершения.
Откроется редактор кода — рабочая среда для написания и компиляции программы.
Написание кода для PIC18F452
У PIC18F452 пять портов: четыре 8-битных (A–D) и один 4-битный (E). В примере используем порт B. Ключевые моменты:
Настройка направления порта (вход/выход)
Каждый порт управляется регистром TRISx (x = A, B, C, D, E). Запись 0x00 в TRISB делает все 8 пинов выходами, 0xFF — входами. Можно настраивать пины по отдельности: например, TRISB = 0x09 (00001001b) сделает RB0 и RB3 входами, остальные — выходами.
Функция задержки
В MikroC подключается библиотека задержек, поэтому можно использовать Delay_ms(миллисекунды). Например, Delay_ms(500) — пауза 0.5 секунды.

Первый пример: мигание светодиодами на порту B
void main() {
TRISB = 0x00; // Порт B на выход
while(1) { // Бесконечный цикл
PORTB = 0x00; // Все пины в 0 (логический 0)
Delay_ms(500); // Задержка 500 мс
PORTB = 0xFF; // Все пины в 1 (логическая 1)
Delay_ms(500);
}
}
После написания кода нажмите кнопку Build All (или Ctrl+F9). При успешной компиляции в папке проекта появится .hex файл.
Полученный hex-файл можно прошить в PIC18F452 с помощью программатора PICkit или протестировать в симуляторе Proteus.
Это базовое введение. В следующих статьях разберем работу с прерываниями, таймерами, АЦП, UART и периферией.
Полезные ссылки:
- Разница между микропроцессором и микроконтроллером
- Сравнение 8085 и 8086
- MAX232: конструкция, работа, применение
- Протокол RS232: как работает
- 10+ инструментов проектирования и симуляции для инженеров
- Коды SMD-резисторов: как определить номинал
Промышленные технологии
- Разработка надежной программы электрического обслуживания: практическое руководство
- Запуск программы надежности: проверенная дорожная карта
- Запуск успешной программы ученичества в производстве: практическое руководство
- Как создать надежную программу обслуживания оборудования для сокращения простоя
- Освоение сварки алюминия: подробное экспертное руководство
- Экспертное руководство по сварке чугуна: проверенные техники для прочных и долговечных швов
- Мастерство пайки алюминия: экспертные техники и практические советы
- Освоение лужения алюминия: Экспертные техники и практическое руководство
- Экспертное руководство по сварке меди: Техники, советы и лучшие практики
- Проектирование надежной программы электрического обслуживания для повышения безопасности и производства