Логический повторитель на микроконтроллере PIC16F628A

Для первого примера я решил выбрать самую простую схему из логики, это Логический повторитель, выполненный на микроконтроллере PIC16F628A.

Техническое задание.

Собрать  схему на микроконтроллере PIC16F628A, которая будет полностью имитировать работу логического элемента повторителя.

Схема логического элемента.

Логический элемент повторитель представлен на рисунке 1. Рядом с элементом изображена таблица истинности, по которой можно определить логику работы элемента. Она позволит нам ориентироваться при построении алгоритма работы элемента и написании кода.

Схема. Логический элемент "1" - повторитель. Таблица истинности.Рисунок 1. Логический элемент "Повторитель" и его таблица истинности.

Эквивалентная схема на PIC-контроллере.

Эквивалентная схема логического элемента «Повторителя» на микроконтроллере PIC16F628A представлена на рисунке 2. Роль логического элемента будет выполнять сам микроконтроллер. Сигнал логической единицы будет подаваться от источника сигнала D8(A) через многоконтактный переключатель DSW1 на вход логического элемента-микроконтроллера RA0 (вывод 17). В соответствии с логикой работы логического элемента (таблицей истинности), на выходе RB0 будет устанавливаться определённый логический сигнал – логическая единица или ноль. Светодиод D1 будет информировать о появлении на выходе элемента логической единицы (когда светится), или ноля.

Эквивалентная схема логического "Повторителя" на микроконтроллере PIC16F628AРисунок 2. Эквивалентная схема логического "Повторителя" на микроконтроллере PIC16F628A.

Алгоритм работы элемента.

В соответствии с таблицей истинности элемента, алгоритм его работы должен быть – проще некуда. Если на входе устанавливается сигнал логической единицы, на выходе тоже должна установиться единица. Если сигнал на входе сбрасывается в ноль, то выход тоже должен быть сброшен в ноль. Этакий повторюша :) Не зря этот элемент называют повторителем. Алгоритм можно представить следующим образом – рисунок 3.

Алгоритм программы микроконтроллера.Рисунок 3. Алгоритм программы микроконтроллера.

Для упрощения понимания и сопоставления алгоритма программному коду, я максимально приблизил их содержание.

 Программный код.

Для создания программного кода я буду использовать программу MPLAB. Кодить будем на ассемблере, поскольку этот язык максимально приближен к работе железа. Ниже представлена логическая часть кода – основной цикл программы:

PPROG1     BTFSC   PORTA,0     ; Если бит 0 регистра PORTA =0,

                                                           ; пропускается следующая операция

                      BSF        PORTB,0     ; Установить бит 0 регистра

                                                            ; PORTB в 1 (зажечь диод).

                      BTFSS   PORTA,0      ; Если бит 0 регистра PORTA =1,

                                                            ; пропускается следующая операция

                       BCF        PORTB,0     ; Сбросить бит 0 регистра PORTB

                                                             ; в 0 (погасить диод).

                       GOTO    PPROG1      ; Переходим к началу проверки

                                                             ; состояния входа и установки

                                                             ; соответствующего уровня выхода.

; С помощью оператора безусловного перехода GOTO организовано бес-

; конечное кольцо цикла выполнения подпрограммы PPROG1

Полный текст программы на ассемблере можно скачать по данной ссылке.

Прошивка микроконтроллера.

После завершения написания программного кода, компилируем его в машинный. Получаем файл прошивки с расширением HEX. С его помощью мы можем зашить написанную нами программу в микроконтроллер. Сам файл можно взять здесь. Поскольку у меня пока нет программатора и самого микроконтроллера, схему я буду собирать виртуальную в программе PROTEUS, а прошивку не зашивать в реальный PIC, а просто указывать в настройках чипа. Такой подход весьма удобен, поскольку позволяет начинающим микроконтроллерщикам с минимальными затратами средств и времени приступить к реальному изучению работы с микроконтроллерами.

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