Добавил:
Кафедра ВТ Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
3
Добавлен:
07.04.2023
Размер:
825.05 Кб
Скачать

МИНОБРНАУКИ РОССИИ

САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ

ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

«ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА)

Кафедра ВТ

ОТЧЕТ

по лабораторной работе №2

по дисциплине «Микропроцессорные системы»

Тема: Реализация логических функций

Студенты гр.

Преподаватель

Зуев И.С.

Санкт-Петербург

2023

Цель работы.

1. Ознакомление с командами логических операций ОМК MCS-51.

2. Изучение способов реализации логических функций в ОМК и их сравнительный анализ.

3. В соответствии с вариантом задания составить таблицу истинности заданной функции . Варианты задания приведены на рисунке 1.

Рисунок 1. Варианты задания

Задание на лабораторную работу

1. Подготовить на ассемблере программы, реализующие заданную логическую функцию с использованием описанных методов. Значения аргументов функции целесообразно вводить, например, с линий порта Р0.0–Р0.3. Результат вывести в порт Р1: если функция принимает значение «1», байт индикации имеет значение FFH, в противном случае – 00.

2. С помощью кросс-отладчика проверить правильность этих программ и оценить время вычисления функции различными методами для фиксированной комбинации входных переменных. Выбрать лучший алгоритм для вычисления заданной функции.

Ход работы

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

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

– формирование адреса доступа к таблице;

– считывание из таблицы значения функции и формирование массива значений функции;

– формирование массива значений функции для индикации.

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

Если таблица размещается с адреса 1100H, то в старший байт регистра DPTR (регистр DPH с адресом 83H) необходимо загрузить значение 11H, а в младший (регистр DPL, адрес 82H) – комбинацию входных значений из ячейки ВПД с адресом 20H. Обращение к таблице осуществляется командой MOVX A,@DPTR, в результате выполнения которой в аккумулятор загружается код значения функции, после чего он должен выводиться в порт P1.

Построим таблицу истинности для заданной функции:

Таблица 1. Таблица истинности

X1

X2

X3

X4

X1⊕X2

¬X3

¬X3∨X4

(X1⊕X2)∧(¬X3∨X4)

0

0

0

0

0

1

1

0

0

0

0

1

0

1

1

0

0

0

1

0

0

0

0

0

0

0

1

1

0

0

1

0

0

1

0

0

1

1

1

1

0

1

0

1

1

1

1

1

0

1

1

0

1

0

0

0

0

1

1

1

1

0

1

1

1

0

0

0

1

1

1

1

1

0

0

1

1

1

1

1

1

0

1

0

1

0

0

0

1

0

1

1

1

0

1

1

1

1

0

0

0

1

1

0

1

1

0

1

0

1

1

0

1

1

1

0

0

0

0

0

1

1

1

1

0

0

1

0


Вектор функция: 0000110111010000

Листинг программы и результаты выполнения приведены ниже.

Листинг программы.

Code.asm

$mod52

ORG 0h

M1:

MOV A,#0

MOV DPTR,#init;Устанавливаем указатель DPTR на начало данных

MOV DPH, #11h;в старший байт регистра DPTR загрузим значение 11h

MOV DPL, P0;а в младший байт регистр DPTR – содержимое порта P0

MOVC A, @A+DPTR;Чтение данных из CSEG по адресу (A)+(DPTR)

MOV B,A

MOV C,B.0;проверяем, что содержится в выбранной нами с порта ячейке таблицы

JC result;переход, если перенос установлен

MOV P1,#0

JMP M1

result:

MOV P1,#0ffh

JMP M1

ORG 1100h

init:

DB 0,0,0,0,1,1,0,1,1,1,0,1,0,0,0,0

END

Вход P0 — это конкретные значения переменных x1 — x4 нашей логической функции. Выход P1 — это итоговое значение нашей логической функции (либо 1, либо 0, при этом если значение = 1 — то на выходе все 1, если значение = 0 — то на выходе все 0). При изменении портов в автоматическом режиме будет меняться и выход.

Результат выполнения.

Рисунок 2. Результат выполнения программы (0000)

Рисунок 3. Результат выполнения программы (1000)

Рисунок 4. Результат выполнения программы (1001)

Рисунок 5. Результат выполнения программы (1010)

Рисунок 6. Результат выполнения программы (1011)

Рисунок 7. Результат выполнения программы (1111)

Соседние файлы в папке 2 лаба