Программирование микроконтроллеров для начинающих

Содержание

Введение

При включении модуля SIM900A происходит множество событий. Одним из них является то, что модуль пытается зарегистрироваться в сети. После успешной регистрации мы можем отправлять SMS, получать SMS и получать имя сотового оператора (поставщика услуг). Основная цель данной статьи – отправить SMS на заранее определенный номер. Получение названия сотового оператора является просто дополнительным бонусом.

Модуль связывается с остальной схемой с помощью TTL или с помощью встроенной микросхемы MAX232. Это означает, что вся связь осуществляется с помощью UART микроконтроллера PIC, и все наши команды от PIC будут отправляться на порт UART с помощью .

Программное обеспечение

Хотя программа снабжена комментариями, здесь я рассмотрю некоторые ее фрагменты. Когда PIC-контроллер включается, отображается короткое приветственное сообщение. Затем начинается 15-секундный отсчет. Я добавил отсчет по двум причинам:

  1. позволить GSM модулю зарегистрироваться в сети;
  2. визуально показать пользователю, что что-то происходит, и микроконтроллер работает.

При завершении обратного отсчета PIC-контроллер отправляет команду:

Важно добавить символы возврата каретки и новой строки,. Это говорит модулю о необходимости обработать текстовую строку, которая поступила в его буфер

Затем модуль возвращает следующую строку:

Это означает, что GSM модуль зарегистрирован в сети NetCom. NetCom – это название провайдера. Именно это название мы хотим отобразить на LCD дисплее. Теперь нам нужно извлечь это название из полученной строки. Способ, которым я это делаю, заключается в чтении всей строки в массив. Затем я ищу «какие-то_символы». Когда «какие-то_символы» найдены, я сохраняю их позиции в другом массиве. Назовем это стартом и стопом. Затем я использую значения старта и стопа, чтобы отобразить символы между ними на LCD дисплее. Возможно, это не самый изящный способ, но он прост.

Поиск названия оператора в строке ответа

Чтобы отправить SMS, я должен послать чуть больше AT команд.

Сначала я посылаю команду:

Это выбор формата SMS сообщения. 1 говорит модулю о необходимости перейти в текстовый режим.

Затем я посылаю команду:

“receiver” – это номер получателя, на который я хочу отправить сообщение.

Третьей я посылаю команду:

А это само сообщение. Поскольку сообщение состоит из нескольких символов, включая пробелы, существует отличный способ сообщить модулю, где находится конец сообщения. Я должен послать символ , что и происходит при нажатии CTRL+Z.

Это символ в обычно таблице ASCII. Теперь модуль отправит сообщение.

Программирование микроконтроллеров pic на языке c

Теперь, наконец-то займемся делом после устанровок программ. Пора написать первую простенькую программу для микроконтроллера. Пережде чем мы начнем ее писать, надо поговорить о том, а какой МК мы будем использовать.

Я могу предложить хорошо зарекомендовавший себя МК PIC16F877. Он включает в себя практически все мыслимые и немыслимые интерфейсы и технологии (за исключением, пожалуй, только USB) и очень неплох по рабочим характеристикам:

Итак, с МК определились. В файлах к этой статье можно найти полный справочник по этому МК. Что покупать теперь понятно, но пока дайвайте все же напишем программу, что бы было понятно что с ней дальше делать и как ее «зашить» в этот МК.

В выпавшем списке доступных МК выбираем PIC16F877. Нажимаем Далее.

Здесь надо выбрать компилятор, который будет обрабатывать код нашей программы. Обязательно надо выбрать пункт HI-TECH PICC Toolsuite в выпадающем списке Active Toolsuite. Это тот самый компилятор языка Си, который мы установили в прошлой стаье. Нажимаем Далее.

Здесь можно добавить к проекту какие-либо готовые файлы, но нам пока такая возможность не нужна. Жмем Далее.

Тут я думаю все понятно. Нажимаем Готово.

Теперь помещаем ниже следующий код в открытое окно файла проекта TestPIC.c (весь проект целиком можно найти в файлах к этой статье).

Наверное Вам интересно, что будет результатом работы этого кода. Будет происходить следующее: к МК подключаются 8 светодиодов. При включении питания, светодиоды начнут мигать в виде «волны» (это лучше видеть, благо осталось нет так уж и много). Рассмотрим поподробнее сам код.

Что они означают? Давайте по порядку.

Как и какие микроконтроллеры будем программировать?

Вопрос «как будем программировать» состоит из двух пунктов. Под программированием понимаются процессы написания программы и прошивания.

Писать текст программы на СИ мы будем в программе MPLAB IDE. Я не знаю, сколько прошло времени от момента написания этих строк, до момента вашего прочтения, но уверен что версия MPLAB IDE описываемая здесь уже устарела. У меня MPLAB IDE v8.30 и именно её мы будем здесь рассматривать. Я знаю, что уже выпущена версия v8.40, но я не стал обновляться, т.к. изменения в новой версии для меня не будут критичны. Я советую вам сначала освоить по самоучителю v8.30, а затем интуитивно разобрать юзерские полезности в более старших версиях. Откуда скачивать? С официального сайта Microchip из архива программ. Вы должны понимать, что термин «устаревшая версия MPLAB IDE» не относится к языку программирования и не является препятствием для вашего обучения.

Что касается пункта «прошивания», то для этого необходимо изучить материал с этой страницы сайта.

Потребуется компилятор. Компилятор – это программа, позволяющая компилировать (переводить текст) с языка программирования в машинные коды, т.е. в прошивку. MPLAB содержит компилятор Ассемблера. Строго говоря, язык Ассемблера, это машинные коды представленные в виде словесных команд. Для компиляции с языка Си нам потребуется HI-TECH PICC Compiler 9.50. Т.к. «правильный» компилятор стоит денег, в Интернете есть демо-версия с ограниченным объемом выходного кода (совсем правильное здесь). Необходимо отметить, что в комплекте с MPLAB IDE v8.30 идёт PICC Compiler 9.60PL5. Но он также имеет ограничения Omniscient Code Generation not available in Lite mode.

О сайте. Электронные устройства и модели, обучение и консультация, документация и средства разработки. Принимаем на реализацию проекты, услуги, идеи. Возмездная помощь.

Здесь может быть ваша реклама

Понравилась конструкция, но не можете собрать?Обращайтесь, мы удовлетворим ваши запросы и пожелания! Напишите нам письмо.

Аппаратное обеспечение

Я собрал макет по следующей схеме.

Схема макета для отправки SMS с помощью PIC16F628A и SIM900A

Поскольку я использую MAX232, я могу использовать её, чтобы обнаружить и устранить проблемы при передаче микроконтроллером GSM модулю. Для этого я отключаю GSM модуль, подключаю кабель для последовательного порта и открываю GtkTerm. Настройки передачи: 9600-8-N-1.

Подключение компьютера для устранения проблем

Это то, что микроконтроллер отправляет GSM модулю. Первые три строки служат только для проверки работоспособности связи через последовательный порт и для просмотра того, что я отправляю. Последние две строки являются инструкциями для GSM модуля.

Я не получил ответ от GSM модуля, так как он еще не подключен

Импульсный источник питания

Еще один пример использования конфигурируемых логических ячеек совместно со встроенными компараторами.
Таймер TMR периодически устанавливает RS-триггер и открывает силовой транзистор. Ток начинает течь через индуктивность, напряжение на резисторе R1 линейно увеличивается. При достижении напряжения на R1 порогового значения срабатывает компаратор COMP1 и сбрасывает триггер, транзистор закрывается. Ток через индуктивность не может прерваться мгновенно, поэтому ток начинает течь через диод D1 и заряжает выходной конденсатор. По срабатыванию таймера триггер снова устанавливается и процесс повторяется.

Рис.17a. Простейший импульсный источник питания.

На рисунке приведена схема повышающего источника, но для других топологий (см. рис. 17b) работа схемы будет аналогичной, поэтому выходной каскад далее рисовать не буду.

схема описание
повышающий
понижающий
Sepic

Рис.17b. Различные топологии импульсных источников питания

Приведенная на рис. 17a схема выполняет функцию преобразования энергии и работает по пиковому значению тока в индуктивности. Можно ввести еще контур регулирования выходного напряжения. Наиболее просто сделать гистерезисное управление: когда напряжение на выходе ниже нормы – происходит накачка источника, когда напряжение выше – выдача управляющих импульсов на силовой транзистор блокируется.

Рис.17c. ИИП с гистерезисным управлением

Включение силового транзистора будет генерировать помеху, которая может приводить к преждевременному срабатыванию компаратора COMP1. Для избавления от этого можно включить RC-фильтр в цепь между R1 и компаратором, а можно добавить рассматриваемый ранее блок бланкирования (формирование импульса по фронту, см. рис 8а, или рис. 14а), который после включения транзистора будет блокировать сброс триггера на короткий интервал времени.

Рис.17d. Помеха при коммутации силового ключа

Рис.17e. ИИП с гистерезисным управлением и бланкированием помехи переключения.

Элементы U1 и U2 можно привести к реализации на элементах ИЛИ и отнести к входу CLC1, тогда вся логическая часть схемы реализуется на трех ячейках CLC (обычно в микроконтроллерах Microchip имеется 4 ячейки).
Все что на схеме изображено левее силового ключа – находится внутри микроконтроллера, связи периферийных модулей так же осуществляются внутри кристалла микроконтроллера. Напряжения порогов Ref и Ref1 могут задаваться встроенными источниками опорного напряжения или ЦАП. Таким образом, импульсный источник питания с регулируемым выходным напряжением можно реализовать на периферийных модулях микроконтроллера. После первоначального конфигурирования схема будет работать полностью аппаратно без необходимости участия ядра в поддержании функции преобразователя. Ядро может заниматься интерфейсными задачами, индикации контроля и др.

Вообще, для построения импульсных источников питания в новых семействах PIC16F17xx микроконтроллеров Microchip есть дополнительные аналоговые (операционные усилители) и специализированные периферийные модули: модули пилообразной компенсации (Slope Compensation) и программируемый рамп-генератор (Programmable Ramp Generator, PRG), операционные усилители, модуль формирования комплементарных выходных сигналов (COG), HLT таймера. Но об этих частях ПНЯ постараемся рассказать в следующий раз.

Периферия независимая от ядра интересна сама по себе, но наибольшую пользу может принести возможность синтеза функциональных блоков, т.е. совместное использование нескольких периферийных модулей для решения конкретных задач. В этом случае тактовая частота, быстродействие и разрядность ядра уходят на второй план – аппаратная часть выполняет специализированные функции, а ядро занимается программной поддержкой работы изделия.

Манчестерский кодер

Манчестерское кодирование широко применяется при передаче сигналов. Каждый бит делится на два интервала, после первого интервала (в середине информационного бита) происходит смена уровня сигнала. Передача каждого информационного бита сопровождается изменением уровня, Нули и Единицы отличаются фазой (1 – перепад из 0 в 1, «0» — из 1 в 0). Таким образом, манчестерский код имеет следующие особенности:

  • Самосинхронизирующийся – нет необходимости передачи специальных синхро сигналов, так как уровень передаваемого сигнала гарантировано меняется в середине информационного бита; высокая плотность информации
  • Нет постоянной составляющей (сигнал меняется каждый такт)

Схема кодирования очень проста и использует один логический элемент ИСКЛЮЧАЮЩЕЕ ИЛИ.

На выходе получаем кодированный поток.

Рис. 12. Диаграммы формирователя Манчестерского кода

Программирование микроконтроллеров PIC16/PIC18 на языке C. Статья третья. Немного о железе

Все то оно хорошо, когда мигает в симуляторе светодиод, но неплохо бы посмотреть на это действо вживую. Расскажу коротко об аппаратной части сего процесса.

Из железа нам нужны: — собственно контроллер с обвязкой; — программатор.

По первому пункту можно: а) собирать схемы на макетной плате; по первому и второму: б) сделать своими руками; в) купить готовое изделие.

Подробнее по пункту а: Будут нужны: — макетная плата; — паяльник, припой, флюс; — базовые навыки пайки; — контроллер и соответствующая обвязка; — кусачки, пассатижи и прочий инструмент; — провода и прочие соединители.

Плюсы: — просто и быстро для небольших схем; — экономно; Минусы: — есть определенный показатель сложности, когда макет становится слишком наляпистым; — очень хрупкая конструкция; — тяжелый поиск неисправностей(провод отпал, пропал контакт).

По пункту б: Ищем в сети схему популярной отладочной платы. Например здесь — olimex.com Еще лучше ищем вместе с рисунком платы печатной. Если нет рисунка придется разводить плату самим. Качаем программу Sprint Layout 5. Очень удобная и простая программа для любительских(и не только) целей. Разводим плату. Читаем про ЛУТ метод изготовления печатных плат в домашних условиях. Печатаем, утюжим, травим, лудим, выполняем монтаж. Для программатора аналогично. Со схемами и рисунком проводников в этом случае в сети намного больше готовых проектов. К нужны в этом случае добавятся: — лазерный принтер; — соответствующая бумага(обычно мелованная, или пленка); — хлорное железо; — текстолит; — терпение.

Плюсы: — при достаточном умении можно изготовить качественные изделия; — экономно; Минусы: — довольно сложно в техническом плане; — пройдет немало времени пока начнут получаться достойные результаты.

По пункту в: Об олимекс уже упоминал. Там неплохой выбор отладочных/демонстрационных плат. С доставкой в Украину проблем нет. Где я еще покупал и кем доволен (не реклама): — Москва — Терраэлектроника, отличный выбор, умеренные цены; — Киев — Флайконт, выбор скуднее, но для украинцев купить проще. Плата обойдется в 50-100$.

С программаторами проще. Из подешевле советую JDM-подобные программаторы. Работает через COM-порт. Цена от 20$. Из подороже пользовался PonyProg. Сейчас PICkit2. Последний около 40$. Работает через USB. Из софта реккомендую: — для JDM — WinPIC800; — ICProg; — PICKit шьет прям из MPLAB, что есть очень удобно.

Получилась одна вода, но все-же кому и пригодится, как стартовая точка.

Декодер манчестерского кода

Схема манчестерского декодера гораздо сложнее. Её задача выделить синхро-импульсы и битовый поток.

В примере применения AN1470 предлагается следующая реализация аппаратного декодирования Минчестерского кода на основе CLC и NCO (управляемого генератора).

Рис.13a. Схема декодера Манчестерского кода

Рис. 13b. Диаграммы, поясняющие работу декодера

Стадия 1 – D-Триггер
Ячейка CLC4 (D-триггер) защелкивает входной поток по спаду сигнала синхронизации. Выход с этого триггера будет являться декодированными (восстановленными) данными из входного потока.

Стадия 2 – элемент XOR (CLC2)
Поскольку в Манчестерском кодировании изменение сигнала происходит в середине каждого информационного бита, то можно использовать элемент ИСКЛЮЧАЮЩЕЕ ИЛИ чтобы обеспечить нарастающий фронт на стадии 3 в середине каждого бита, т.е. мы синхронизируем декодер в середине каждого бита.

Стадия 3 – NCO + AND-OR (CLC1)
модуль NCO, используется для генерации ¾ битового интервала по завершении которого производится захват (фиксация) данных. NCO используется в режиме с активным низким состоянием. Длительность импульсов можно регулировать с помощью регистров. Модулю NCO необходим источник тактовых импульсов, которые поступают ему из CLC1.
Эти два блока являются наиболее важными в декодере. Они создают импульсы фиксированной длины после каждого нарастающего фронта сигнала, выходящего из «стадия 2». Выходной сигнал NCO подается обратно в элемент И-ИЛИ так, что если выход из «стадия 2» становится равным нулю, то NCO будет продолжать тактироваться до своего переполнения.

Выделенные сигналы синхронизации и данных можно завести на модуль SPI. Тогда, по приему кодовой посылки, в буфере SPI получим декодированные данные и прерывание по приему.

Программирование микроконтроллеров для начинающих

Начинать осваивать программирование микроконтроллеров для начинающих рекомендуется с изучения архитектуры и разновидностей. Промышленность выпускает следующие виды МК:

  • встраиваемые;
  • 8-, 16- и 32-разрядные;
  • цифровые сигнальные процессоры.

Производителям микроконтроллеров приходится постоянно балансировать между габаритами, мощностью и ценой изделий. Поэтому до сих пор в ходу 8-разрядные модели. Они обладают довольно низкой производительностью, но во многих случаях данный факт является преимуществом, т.к. позволяет экономить энергоресурсы. Цифровые сигнальные процессоры способны обрабатывать в реальном времени большие потоки данных. Однако их стоимость намного выше.

Количество используемых кодов операций может быть неодинаковым. Поэтому применяются системы команд RISC и CISC. Первая считается сокращенной и выполняется за один такт генератора. Это позволяет упростить аппаратную реализацию ЦП, повысить производительность микросхемы. CISC — сложная система, способная значительно увеличить эффективность устройства.

Изучить программирование микроконтроллеров для начинающих невозможно без понимания алгоритмов. На ЦП микросхемы команды подаются в определенном порядке. Причем их структура должна восприниматься процессором однозначно. Поэтому сначала программист составляет последовательность выполнения команд. Заставить ЦП немедленно остановить программу можно при помощи вызова прерывания. Для этого используют внешние сигналы либо встроенные периферийные устройства.

Семейства микроконтроллеров

Чаще всего встречаются микроконтроллеры следующих семейств:

  • MSP430 (TI);
  • ARM (ARM Limited);
  • MCS 51 (INTEL);
  • STMB (STMicroelectronics);
  • PIC (Microchip);
  • AVR (Atmel);
  • RL78 (Renesas Electronics).

Одной из наиболее популярных в электронной промышленности является продукция компании Atmel, построенная на базе RISC-ядра. Первые микросхемы, разработанные в 1995 году, относятся к группе Classic. Изучать программирование микроконтроллеров AVR для начинающих желательно на более современных моделях:

  • Mega — семейство мощных микросхем с развитой архитектурой.
  • Tiny — недорогие изделия, имеющие восемь выводов.

Необходимо помнить, что совместимость систем команд сохраняется лишь при переносе программы с малопроизводительного МК на более мощный.

Изделия компании «Атмел» просты и понятны. Однако для использования всего функционала придется разработать программное обеспечение. Приступать к программированию микроконтроллеров AVR для начинающих рекомендуется с загрузки специализированной среды Atmel Studio. Актуальная версия предоставляется официальным сайтом производителя на бесплатной основе. Для разработки ПО в этой среде дополнительные программные компоненты не требуются.

Комплекс «Атмел Студио» включает огромное количество примеров готовых проектов. Это поможет новичку быстрее освоить базовые возможности и начать создавать собственные программы. В нем также имеются модули для компиляции и окончательной отладки кода. Параллельно с его освоением нужно изучать языки программирования. Без них разработать программное обеспечение невозможно.

Квадратурный энкодер

Квадратурный энкодер это устройство, при вращении оси которого формируются два квадратурных сигнала (сдвинутых по фазе). Применяется в определении скорости (угла поворота или числа оборотов) и направления вращения/перемещения. Пожалуй, самое известное применение это колесо мышки.

Ниже приведены две схемы декодирования сигналов квадратурного энкодера.

Рис. 11a. Квадратурный декодер со счетным выходом и сигналом направления.

Эта схема детектирует фазы входных сигналов (состояние выхода D показывает направление вращения энкодера) и выдает тактовые сигналы (выход С).

Рис 11b. Квадратурный декодер с двумя счетными выходами

Эта схема выдает импульсы. Один выход при вращении по часовой стрелке, второй выход – при обратном вращении.

При переключении контактов энкодер выдает множественные ложные срабатывания (дребезг контактов).

Рис. 11c. Сигналы с выходов механического квадратурного энкодера

Вот тут фрагмент покрупнее:

Рис. 11d. Сигналы с выходов механического квадратурного энкодера

Поэтому обе схемы нуждаются в очищенных от дребезга сигналов. Ранее мы уже рассматривали варианты подавления дребезга аппаратно на ячейках CLC.

Рис. 11e. Входные сигналы с энкодера и очищенные от дребезга.

Под обработку сигналов квадратурного энкодера понадобятся 4 ячейки CLC – две для подавления дребезга и две для детектирования.

Рис. 11f. Диаграммы сигналов обработки квадратурного энкодера для схемы с выходом направления

Рис. 11g. Диаграммы сигналов обработки квадратурного энкодера для схемы с двумя счетными выходами.

Входы и выходы логических ячеек могут подключаться к портам микроконтроллера, а могут иметь только внутренние соединения. Для данного примера необходимы только два входа, выходы декодера могут подключаться к внутренним счетчикам микроконтроллера, формировать прерывания, опрашиваться программой и пр… Но для задач тестирования можно все выходы CLC вывести наружу и проверить правильность работы схемы.

Где применяется?
Механические и оптические энкодеры, подсчет числа входящих и выходящих людей, закрытие турникета при прохождении в неположенном направлении ))

Newer Device Available PIC16F18444

Status: In Production

View Datasheet View Comparisons

Features:

  • Low voltage programming
  • Low speed Clock mode
  • Programmable BOR
  • 4MHz internal oscillator
  • Programmable VREF
  • 128 bytes of EEPROM
  • Data Memory
  • ICD

View More

  • ProgrammingServices Available
  • SamplingOptions
  • BuyNow

This powerful (200 nanosecond instruction execution) yet easy-to-program (only 35 single word instructions) CMOS FLASH-based 8-bit microcontroller packs Microchip’s powerful PIC architecture into an 18-pin package and is upwards compatible with the PIC16F628, PIC16C62XA, PIC16C5X and PIC12CXXX devices. The PIC16F628A features 4MHz internal oscillator, 128 bytes of EEPROM data memory, a capture/compare/PWM, a USART, 2 Comparators and a programmable voltage reference that make it ideal for analog/integrated level applications in automotive, industrial, appliances and consumer applications.

For product comparison, please consider: PIC16F18444

  • Low voltage programming
  • Low speed Clock mode
  • Programmable BOR
  • 4MHz internal oscillator
  • Programmable VREF
  • 128 bytes of EEPROM
  • Data Memory
  • ICD

User Guides

  • Integrated Development Environments
  • Compilers
  • Programmers
  • Demo & Evaluation Boards
  • Code Examples

MPLAB X Integrated Development Environment (IDE) is an expandable, highly configurable software program that incorporates powerful tools to help you discover, configure, develop, debug and qualify embedded designs for most of Microchip’s microcontrollers, microprocessors and digital signal controllers. MPLAB X IDE works seamlessly with the MPLAB development ecosystem of

Available as free, unrestricted-use downloads, our award-winning MPLAB XC C Compilers are comprehensive solutions for your project’s software development. Finding the right compiler to support your device is simple:

  • MPLAB XC8 supports all 8-bit PIC and AVR microcontrollers (MCUs)
  • MPLAB XC16 supports all 16-bit PIC MCUs and dsPIC Digital

Fast programming, increased functionality, at the same price as its predecessor, the PICkit 3.

The MPLAB PICkit 4 now has Programmer-to-Go functionality for 8-bit, 16-bit and 32-bit PIC MCUs and dsPICs and also SAM MCU devices . The firmware update comes with MPLAB X IDE v5.30. AVR is expected soon!

The MPLAB PICkit 4 In-Circuit

The MPLAB ICD 4 In-Circuit Debugger/Programmer is Microchip’s fastest, cost-effective debugging and programming tool for PIC and SAM Microcontrollers (MCUs), dsPIC Digital Signal Controllers (DSCs), and CEC flash microcontrollers. This speed is provided by a SAME70 MCU with 300 MHz, 32-bit MCU with 2MB of RAM and a high-speed FPGA to yield

The MPLAB PM3 Universal Device Programmer is easy to use and operates with a PC or as a stand-alone unit, and programs Microchip’s entire line of PIC devices as well as the latest dsPIC DSC devices. When used standalone, data can be loaded and saved with the SD/MMC card (not included).

Как и какие микроконтроллеры будем программировать?

Вопрос «как будем программировать» состоит из двух пунктов. Под программированием понимаются процессы написания программы и прошивания.

Писать текст программы на СИ мы будем в программе MPLAB IDE. Я не знаю, сколько прошло времени от момента написания этих строк, до момента вашего прочтения, но уверен что версия MPLAB IDE описываемая здесь уже устарела. У меня MPLAB IDE v8.30 и именно её мы будем здесь рассматривать. Я знаю, что уже выпущена версия v8.40, но я не стал обновляться, т.к. изменения в новой версии для меня не будут критичны. Я советую вам сначала освоить по самоучителю v8.30, а затем интуитивно разобрать юзерские полезности в более старших версиях. Откуда скачивать? С официального сайта Microchip из архива программ. Вы должны понимать, что термин «устаревшая версия MPLAB IDE» не относится к языку программирования и не является препятствием для вашего обучения.

Что касается пункта «прошивания», то для этого необходимо изучить материал с этой страницы сайта.

Потребуется компилятор. Компилятор – это программа, позволяющая компилировать (переводить текст) с языка программирования в машинные коды, т.е. в прошивку. MPLAB содержит компилятор Ассемблера. Строго говоря, язык Ассемблера, это машинные коды представленные в виде словесных команд. Для компиляции с языка Си нам потребуется HI-TECH PICC Compiler 9.50. Т.к. «правильный» компилятор стоит денег, в Интернете есть демо-версия с ограниченным объемом выходного кода (совсем правильное здесь). Необходимо отметить, что в комплекте с MPLAB IDE v8.30 идёт PICC Compiler 9.60PL5. Но он также имеет ограничения Omniscient Code Generation not available in Lite mode.

О сайте. Электронные устройства и модели, обучение и консультация, документация и средства разработки. Принимаем на реализацию проекты, услуги, идеи. Возмездная помощь.

Здесь может быть ваша реклама

Понравилась конструкция, но не можете собрать?Обращайтесь, мы удовлетворим ваши запросы и пожелания! Напишите нам письмо.

Архивы

АрхивыВыберите месяц Апрель 2021  (1) Март 2021  (3) Февраль 2021  (2) Январь 2021  (1) Декабрь 2020  (1) Ноябрь 2020  (1) Октябрь 2020  (1) Сентябрь 2020  (2) Июль 2020  (2) Июнь 2020  (1) Апрель 2020  (1) Март 2020  (3) Февраль 2020  (2) Декабрь 2019  (2) Октябрь 2019  (3) Сентябрь 2019  (3) Август 2019  (4) Июнь 2019  (4) Февраль 2019  (2) Январь 2019  (2) Декабрь 2018  (2) Ноябрь 2018  (2) Октябрь 2018  (3) Сентябрь 2018  (2) Август 2018  (3) Июль 2018  (2) Апрель 2018  (2) Март 2018  (1) Февраль 2018  (2) Январь 2018  (1) Декабрь 2017  (2) Ноябрь 2017  (2) Октябрь 2017  (2) Сентябрь 2017  (4) Август 2017  (5) Июль 2017  (1) Июнь 2017  (3) Май 2017  (1) Апрель 2017  (6) Февраль 2017  (2) Январь 2017  (2) Декабрь 2016  (3) Октябрь 2016  (1) Сентябрь 2016  (3) Август 2016  (1) Июль 2016  (9) Июнь 2016  (3) Апрель 2016  (5) Март 2016  (1) Февраль 2016  (3) Январь 2016  (3) Декабрь 2015  (3) Ноябрь 2015  (4) Октябрь 2015  (6) Сентябрь 2015  (5) Август 2015  (1) Июль 2015  (1) Июнь 2015  (3) Май 2015  (3) Апрель 2015  (3) Март 2015  (2) Январь 2015  (4) Декабрь 2014  (9) Ноябрь 2014  (4) Октябрь 2014  (4) Сентябрь 2014  (7) Август 2014  (3) Июль 2014  (2) Июнь 2014  (6) Май 2014  (4) Апрель 2014  (2) Март 2014  (2) Февраль 2014  (5) Январь 2014  (4) Декабрь 2013  (7) Ноябрь 2013  (6) Октябрь 2013  (7) Сентябрь 2013  (8) Август 2013  (2) Июль 2013  (1) Июнь 2013  (2) Май 2013  (4) Апрель 2013  (7) Март 2013  (7) Февраль 2013  (7) Январь 2013  (11) Декабрь 2012  (7) Ноябрь 2012  (5) Октябрь 2012  (2) Сентябрь 2012  (10) Август 2012  (14) Июль 2012  (5) Июнь 2012  (21) Май 2012  (13) Апрель 2012  (4) Февраль 2012  (6) Январь 2012  (6) Декабрь 2011  (2) Ноябрь 2011  (9) Октябрь 2011  (14) Сентябрь 2011  (22) Август 2011  (1) Июль 2011  (5)

Программирование микроконтроллеров pic на языке c

Теперь, наконец-то займемся делом после устанровок программ. Пора написать первую простенькую программу для микроконтроллера. Пережде чем мы начнем ее писать, надо поговорить о том, а какой МК мы будем использовать.

Я могу предложить хорошо зарекомендовавший себя МК PIC16F877. Он включает в себя практически все мыслимые и немыслимые интерфейсы и технологии (за исключением, пожалуй, только USB) и очень неплох по рабочим характеристикам:

Итак, с МК определились. В файлах к этой статье можно найти полный справочник по этому МК. Что покупать теперь понятно, но пока дайвайте все же напишем программу, что бы было понятно что с ней дальше делать и как ее «зашить» в этот МК.

В выпавшем списке доступных МК выбираем PIC16F877. Нажимаем Далее.

Здесь надо выбрать компилятор, который будет обрабатывать код нашей программы. Обязательно надо выбрать пункт HI-TECH PICC Toolsuite в выпадающем списке Active Toolsuite. Это тот самый компилятор языка Си, который мы установили в прошлой стаье. Нажимаем Далее.

Здесь можно добавить к проекту какие-либо готовые файлы, но нам пока такая возможность не нужна. Жмем Далее.

Тут я думаю все понятно. Нажимаем Готово.

Теперь помещаем ниже следующий код в открытое окно файла проекта TestPIC.c (весь проект целиком можно найти в файлах к этой статье).

Наверное Вам интересно, что будет результатом работы этого кода. Будет происходить следующее: к МК подключаются 8 светодиодов. При включении питания, светодиоды начнут мигать в виде «волны» (это лучше видеть, благо осталось нет так уж и много). Рассмотрим поподробнее сам код.

Что они означают? Давайте по порядку.