Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MPS_kaf12_8 / MPS_kaf12_8.doc
Скачиваний:
114
Добавлен:
27.03.2016
Размер:
3.27 Mб
Скачать

1.2. Пример подготовки к выполнению лабораторной работы

Рассмотрим вариант задания, в котором МК вычисляет простую логическую функцию F= Z&Y&X. Разрешающий сигнал достоверности входных данных имеет высокий уровень. Микроконтроллер должен вырабатывать сигнал подтверждения приёма информации также высокого уровня. В программе должна быть реализована запись вычисленного значения функции вместе с переменными во внутреннюю память данных, начиная с ячейки, адрес которой находится в регистре R0.

Разработаем требуемую программу. Её текст с необходимыми комментариями приведен ниже. При написании программы учитывается, что пользовательская программа, загруженная в эмулятор ПЗУ МК, будет отображаться в памяти программ, начиная с адреса 8000h.

Программа

ORG 8000h

Эта макрокоманда Ассемблера указывает, что команда, расположенная после неё в тексте, будет записана в памяти программ, начиная с адреса 8000h.

BEGIN: MOV P1,#00111111b

Этой командой задаётся начальное значение порта Р1: в разряды Р1.0-Р1.3 записываются «1» потому, что эти разряды порта предназначены для приёма входных сигналов и в соответствующих разрядах выходного «регистра-защелки» этого порта должны быть «1» – настройка на ввод. Линии Р1.4 и Р1.5 микроконтроллера не используются и они остаются в состоянии «1» («1» – это исходное состояние «регистров-защёлок» портов МК при подаче сигнала сброса). Р1.6 = 0 – для данного варианта задания это пассивное значение сигнала «Подтверждение». Р1.7 = 0 – исходное значение выходного сигнала результата (оно в начальный момент произвольное и может быть и равно «1»).

metka:

JNB P1.3, $ ; ожидание сигнала разрешения

MOV C,P1.2 ; С=Z

ANL C,P1.1 ; C=Z&Y

ANL C,P1.0 ; C=Z&Y&X

SETB P1.6 ; выдача сигнала подтверждения конца ввода

переменных

JB P1.3,$ ; ожидание снятия сигнала разрешения

MOV P1.7,C ; выдача результата

ANL A, #0Fh ; в аккумуляторе выделяются значения

входных переменных

RLC A ; циклический сдвиг аккумулятора влево через С,

при этом значение С записывается в младший разряд А

MOV @R0, A ; запись цифры в массив по адресу,

находящемуся в регистре R0

INC R0

CLR P1.6 ; сброс сигнала подтверждения

AJMP metka ; переход к вычислению

нового значения функции

END

Примечание. В дальнейшем с учетом реализации микропроцессорного устройства на УЛС, программа будет модифицироваться.

Для подготовки к отладке программы составим таблицу истинности заданной функции (табл.1.1). Порядок переменных в столбцах таблицы может быть любым, но желательно, чтобы расположение повторяло расположение переменных на входах МК (Z Y X).

Таблица 1.1

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

P1.2=Z

P1.1=Y

P1.0=X

P1.7= F (X,Y,Z)

0

0

0

1

0

0

1

0

0

1

0

1

0

1

1

0

1

0

0

1

1

0

1

1

1

1

0

1

1

1

1

0