Логический элемент И на микроконтроллере PIC16F628A

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

Создать аналог логического элемента «И» на микроконтроллере PIC16F628A.

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

Схема логического элемента представлена на рисунке 1. Там же изображена и его таблица истинности.

Схема и таблица истинности логического элемента "И" 

Рисунок 1. Схема логического элемента «И» и его таблица истинности.

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

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

Схема аналога элемента на микроконтроллере так же немного усложняется в соответствии со схемой самого элемента. То есть, мы определяем в контроллере ещё один вход и подключаем его к свободному контакту многоконтактного переключателя, что бы была возможность подавать на него сигнал не зависимо от сигнала на первом входе. Схема изображена на рисунке 2.

Схема аналога логического элемента «И» на микроконтроллере PIC16F628A

Рисунок 2. Схема аналога логического элемента «И» на микроконтроллере PIC16F628A.

Здесь, от источника сигнала D8(A) мы сможем с помощью контактов 1 и 2 переключателя DSW1 раздельно подавать сигналы на входы контроллера RA0 и RA1. Микроконтроллер будет анализировать сигналы на входах, и выдавать соответствующий их комбинациям сигнал на выход RB0. Наличие сигнала логической единицы на выходе мы будем определять по свечению светодиода D1.

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

Алгоритм работы контроллера в нашей схеме представлен на рисунке 3. Исходя из таблицы истинности элемента (рис. 1) мы видим, что логическая единица на выходе элемента появляется только в одном из возможных случаев - когда на обоих входах присутствует логическая единица. Поэтому, при проверке состояния первого входа, если на нём ноль, проверка второго входа уже не требуется, и программа зацикливается на проверке первого входа. В конце подпрограмм проверки входа в каждом цикле выход сбрасывается в ноль, на тот случай, если подпрограмме проверке входа (PPROG1 или PPROG2) предшествовала подпрограмма установки выхода в единицу (PPROG3).

Алгоритм программы работы логического элемента «И»

Рисунок 3. Алгоритм программы работы логического элемента «И».

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

PPROG1      BTFSC      PORTA,0     ; Если бит 0 регистра PORTA =0,
                                                    ; пропускается следующая операция
                  GOTO       PPROG2
                  BCF           PORTB,0     ; Сбросить бит 0 регистра PORTB
                                                     ; в 0 (погасить диод).
                  GOTO       PPROG1      ; возвращаемся к проверке
                                                     ; вывода RA0. (если этот возврат
                                                     ; не делать, по какой то причине
                                                     ; на выводе RB0 будет периодически
                                                     ; устанавливаться логическая
                                                     ; единица, диод будет моргать)
PPROG2      BTFSC       PORTA,1     ; Если бит 1 регистра PORTA =0,
                                                     ; пропускается следующая операция
                  GOTO       PPROG3
                  BCF           PORTB,0      ; Сбросить бит 0 регистра PORTB
                                                      ; в 0 (погасить диод).
                  GOTO       PPROG1       ; возвращаемся к проверке
                                                      ; вывода RA0
 
PPROG3       BSF           PORTB,0      ; Установить бит 0 регистра
                                                       ; PORTB в 1 (зажечь диод).
                  GOTO       PPROG1        ; Переходим к началу проверки
                                                       ; состояния входов и установки
                                                       ; соответствующего уровня выхода.

Оригинальный файл с программным кодом качайте по этой ссылке.

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

Программный код был успешно скомпилирован. Его работа проверена в симуляторе Протеус.

Файл прошивки лежит здесь.

Архив файлов, использоывнных в примере лежит тут.

При подготовке материала была оказана информационная поддержка некоторыми участниками Форума про радио.

Обсудить данный пример можно там же в теме Ликбез по программированию PIC