Программирование PIC-контроллеров
Кольцевой буфер – это метод передачи данных в котором используется оперативная память фиксированного размера. В процессе передачи данных после заполнения последней ячейки памяти, запись начинается с первой ячейки, при этом старые данные перезаписываются, чтение из буфера происходит таким же образом, по замкнутому маршруту.
Программирование PIC-контроллеров
При написании программ часто требуется реализовать определенную временную задержку, например чтобы помигать светодиодом. Паузу можно организовать программным путем или с помощью внутренних таймеров микроконтроллера. Программный способ заключается в многократном выполнении циклического кода, при этом время рассчитывается исходя из количества выполненных
Программирование PIC-контроллеров
Прерывания в микроконтроллерах очень часто используются при разработке радиоэлектронных устройств, они позволяют реализовать многозадачность, то есть параллельное выполнение нескольких задач. Под прерыванием подразумевается условный переход из какой-либо области памяти программ (во время выполнения основной программы) на четко определенный адрес
Программирование PIC-контроллеров
Косвенная адресация очень удобная штука, когда необходимо оперировать с большим количеством регистров, о ней я упоминал еще в первой статье, здесь же покажу, как можно применить данный вид адресации. Для работы с косвенной адресацией используется регистр специального назначения FSR и физически не реализованный регистр INDF.
В микроконтроллерах PIC16 отсутствует аппаратный блок умножения и деления чисел, но эти арифметические операции можно реализовать программным путем. Операцию умножения можно представить в виде многократного сложения, деление – многократным вычитанием. Например, выражение 8х3=24 равнозначно 8+8+8=24, для деления в качестве примера возьмем следующее выражение 36:10=3,6.
Иногда при написании программ требуется выполнить простые арифметические операции с многобайтными числами. С однобайтными числами все просто, сложение и вычитание выполняются стандартными командами addwf, addlw, subwf, sublw, для многобайтных чисел придется писать небольшие подпрограммы. Я буду рассказывать только про целочисленные операции, без дробных частей.
Программирование PIC-контроллеров
Таблица данных применяется для задания большого количества констант (чисел) в памяти программ. Например, требуется получить сигнал заданной формы с помощью ШИМ или резистивного ЦАП (R-2R), для этого необходимо загнать в таблицу заранее рассчитанные коэффициенты, и считывать их через определенные промежутки времени, как это сделано в статье про регулировку яркости светодиода.
Кнопку к микроконтроллеру можно подключить двумя основными способами, с подтяжкой линии порта к высокому логическому уровню или низкому через резистор, как показано на картинке ниже. Я обычно использую первый вариант подключения, можно конечно использовать внутренние подтягивающие резисторы на входах PORTB, но мне еще не доводилось применять такой способ.
Программирование PIC-контроллеров
“Шапка” программы начинается с подключения специального файла с расширением INC, в виде строчки #include , где include – директива подключения дополнительного файла. Эти файлы для каждого типа микроконтроллера хранятся в папке программы MPLAB. В этих файлах адресам регистров специального назначения присвоены их названия, а также названия
Здесь и в следующих статьях я расскажу про семейство микроконтроллеров PIC16, а также примеры программирования на языке ассемблер. Про элементарные понятия писать не буду, так как ориентируюсь на читателя, предварительно ознакомленного с минимумом информации по микроконтроллерам. В общем, микроконтроллер представляет собой небольшой универсальный