Реализация фрагмента контактной схемы программным методом

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    65,75 Кб
  • Опубликовано:
    2012-10-11
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Реализация фрагмента контактной схемы программным методом

Содержание

 

1. Типовое задание

1.1 Задание по варианту

2. Выполнение

2.1 Анализ поставленной задачи

2.2 Блок-схема 1

2.3 Описание алгоритма реализации программы 1

2.4 Программа 1 на языке Ассемблера

2.5 Блок-схема 2

2.6 Описание алгоритма реализации программы 2

2.7 Программа 2 на языке Ассемблера

2.9 Блок-схема 3

2.10. Описание алгоритма реализации программы 3

2.11. Программа 3 на языке Ассемблера

2.8 Карта памяти микропроцессорной системы

2.9 Анализ временных характеристик

2.9.1 Расчет времени выполнения программы 1

2.9.2 Расчет времени выполнения программы 2

2.9.3 Расчет времени выполнения программы 3

3. Вывод

4. Список литературы

1. Типовое задание

1. Выполнить анализ поставленной задачи, согласно варианту задания. Определить методы ее решения.

. Разработать общий алгоритм реализации задания и провести анализ временных и точностных параметров предлагаемого решения задачи.

. Выполнить инициализацию переменных в общем алгоритме архитектурным элементам микропроцессора КР580ВМ80А и портам ввода-вывода. Составить карту памяти микропроцессорной системы для реализации программы.

. С учетом архитектурных особенностей микропроцессора КР580ВМ80А и заданных методов адресации доступа к операндам разработать подробные алгоритмы реализации задачи.

. На языке Ассемблера микропроцессора КР580ВМ80А разработать программы реализации задачи.

. Выполнить анализ соответствия временных и точностных характеристик разработанного устройства заданным.

. Вывод.

 

1.1 Задание по варианту


Программным способом реализовать фрагмент контактной схемы.

Текущие состояния реле  поступают в порт ввода №1 непрерывно во времени в виде байта информации:

X7

X6

X5

X4

X3

X2

X1

X0

D7

D6

D5

D4

D3

D2

D1

D0


Номер бита соответствует номеру реле.

Рисунок 1. Функциональная схема устройства

Состояние бита  соответствует разомкнутому состоянию реле , т.е. напряжение на зажимах 1-2 катушки реле отсутствует. Такому состоянию реле соответствует разомкнутое состояние () нормальноразомкнутого контакта 3-4 и замкнутое состояние () нормальнозамкнутого контакта 5-6. При подаче напряжения на обмотку катушки реле (контакты 1-2) () состояние его контактов меняется на противоположное: нормальноразомкнутый контакт 3-4 замыкается (его состояние становится равным ), а нормальнозамкнутый контакт 5-6 размыкается (его состояние становится равным ).

Рисунок 2. Разомкнутое (а) и замкнутое (б) состояние реле

Согласно логического состояния цепей управления (контактов ) в разрабатываемом устройстве необходимо управлять состоянием реле . Управляющее слово состоянием реле  выводится микропроцессором в порт вывода №2 в виде байта информации, где номер бита также соответствует номеру реле . Если в соответствии с текущим состоянием реле  реле  в данный момент должно быть замкнуто, то выводится логическая "1".

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

Рисунок 3 - Контакторная схема по варианту

алгоритм микропроцессор программный память

2. Выполнение


2.1 Анализ поставленной задачи


Необходимо реализовать фрагмент контактной схемы программным методом.

Я применил метод решения задачи, который позволяет реализовать работу данной схемы при использовании лабораторного стенда. Лабораторные стенды сопряжены с учебным микропроцессорным комплектом (УМК) на базе микропроцессора К580ВМ80А. Стенд подключен через внешний разъем, объединяющий шину адреса, шину данных и шину управления УМК. На лицевую панель стенда выведены линии шины адреса и шины управления. Стенд представляет собой набор микросхем, из которых при помощи внешних проводников собирается нужная схема. Часть соединений выполнена внутри стенда.

Следует сказать несколько слов о вводе-выводе данных. Ввод-вывод данных - это режим, при котором микропроцессор принимает данные из внешнего устройства или передает их во внешнее устройство. Для организации обмена данными используются три шины: адреса, данных и управления. На шину адреса микропроцессор выставляет адрес внешнего устройства, по шине данных передаются данные, шина управления управляет внешними устройствами в соответствии с их временными диаграммами.

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

Ввод данных будет происходить следующим образом: входные сигналы будут подаваться непосредственно на шину данных путем подачи на контакты напряжения с уровнем логической 1 или 0 (земля) с помощью проводников. Этим я обеспечил непрерывность подачи текущих состояний реле. Во время подачи соответствующего сигнала процессору эти данные будут считываться и сохраняться в одном из регистров.

Соответствие номера реле и разряда бита шины адреса:

х

X6

X5

X4

X3

X2

X1

X0

D7

D6

D5

D4

D3

D2

D1

D0


х - незначащий бит.

Обычно при чтении данных, прежде всего, микропроцессором выставляется адрес устройства, данные которого будут прочитаны; на управляющем выходе DBIN микропроцессор выставляет сигнал чтения (приема) данных; по сигналу чтения внешнее устройство выставляет на шину данных данные, которые считываются микропроцессором; микропроцессор снимает сигнал чтения, внешнее устройство снимает данные с шины; микропроцессор снимает адрес внешнего устройства. Стоит отметить, что нам не важен ни адрес, выставляемый микропроцессором, ни сигнал на управляющем выходе, так как процессор только считывает данные, которые непосредственно выставляются с помощью проводников.

Далее идет обработка сигнала, сохраненного в регистре. В программе 1 применяется сдвиг аккумулятора вправо и влево для того, чтобы сигналы использовали одинаковый разряд, что позволяет производить над ними нужные мне логические операции. Так как данную схему можно представить в виде логической схемы, то при реализации метода я использовал операции логического сложения, умножения, а также инвертирование аккумулятора, которое использовалось для описания логики работы нормальнозамкнутых контактов. Также применялось маскирование данных во избежание ошибки при выводе выходных данных.

При выводе предполагалось применить несколько способов, в том числе запись результатов в оперативное запоминающее устройство (ОЗУ). ОЗУ предназначено для хранения оперативной (изменяемой) информации. Для ОЗУ предусмотрено три режима работы: режим хранения данных при отсутствии обращения к ОЗУ, режим чтения данных и режим записи новых данных. Каждое запоминающее устройство включает в себя средства адресации, накопитель информации и устройство управления. Накопитель информации состоит из запоминающих элементов (элементов памяти), число которых равняется емкости запоминающего устройства. Под элементами памяти подразумеваются элементарные схемы, предназначенные для приема, хранения и выдачи одного бита информации. Для подключения ОЗУ к микропроцессорной системе используют шины: адреса, данных и управления. При подключении памяти необходимо учесть нагрузочную способность микропроцессора и применяемых ОЗУ. При необходимости для согласования нагрузочной способности между МП и памятью включают схемы согласования (буферы). В общем случае схемы согласования используются для всех трех шин. При подключении блока ОЗУ к микропроцессорной системе необходимо также учитывать временные параметры используемых микросхем. Во избежание сбоев в чтении или записи данных временные параметры микросхем ОЗУ должны соответствовать временным параметрам работы микропроцессора. Использование схем согласования увеличивает временные задержки между сигналами управления. Обычно при записи данных микропроцессором выставляется адрес устройства, в которое будут записываться данные; микропроцессором выставляются данные на шину данных; на управляющем выходе "запись" микропроцессор выставляет сигнал записи данных; микропроцессор снимает сигнал записи; микропроцессор снимает данные с шины данных и адрес с шины адреса.

Программа 2 составлена на основе таблицы 1, которая, в свою очередь, составлена на основе исходной контакторной схемы.

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

X6

X5

X4

X3

X2

X1

X0

Y1

Y2

1

x

1

x

x

1

0

1

х

1

x

1

x

0

x

0

1

х

1

x

1

1

x

x

x

1

х

1

0

x

x

x

x

x

1

х

x

1

x

x

1

0

x

х

1

x

x

1

0

1

x

x

х

1


х - незначащий бит.

Следует отметить, что при реализации данной таблицы истинности, был учтен тот факт, что значения Y1 и Y2 могут одновременно равняться единице.

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

х

X0

X1

X2

X3

X4

X5

X6

D7

D6

D5

D4

D3

D2

D1

D0


Данное действие позволяет уменьшить время выполнения программы, которое будет зависеть от состояний реле. Например, если состояния реле Х6 и Х2 равны нулю, то цикл программы будет иметь наименьшее время выполнения.

2.2 Блок-схема 1


Ниже приведена подробная блок-схема алгоритма решения поставленной задачи.




2.3 Описание алгоритма реализации программы 1


1. Входные данные загружаются в аккумулятор.

. Для последующего использования данные сохраняются в регистре В.

. Сдвиг аккумулятора на один разряд вправо, Х1 в нулевом разряде.

. Сохранение Х1 в регистре D.

5. Сдвиг аккумулятора на один разряд вправо, инвертирование аккумулятора,  в нулевом разряде.

. Происходит логическое сложение аккумулятора и данных в регистре D, результат операции "" записывается в регистр D.

. После загрузки данных из регистра В происходит инвертирование аккумулятора, в нулевом разряде .

. Происходит логическое умножение аккумулятора и данных в регистре D, результат операции "" записывается в регистре С.

. После загрузки данных из регистра В происходит сдвиг аккумулятора вправо на три разряда для установки Х3 в нулевой разряд.

. Происходит логическое сложение аккумулятора и данных в регистре С, результат операции "" записывается в регистре С.

. После загрузки данных из регистра В происходит сдвиг аккумулятора вправо на четыре разряда для установки Х4 в нулевой разряд.

. Происходит логическое умножение аккумулятора и данных в регистре С, результат операции "" записывается в регистре С.

. После загрузки данных из регистра В происходит сдвиг аккумулятора влево на три разряда и инвертирование аккумулятора для установки  в нулевой разряд.

. Происходит логическое умножение аккумулятора и данных регистра С, результат Y1

операции "" записывается в регистре С.

. После загрузки данных из регистра В происходит сдвиг аккумулятора вправо на один разряд и инвертирование аккумулятора для установки  в нулевом разряде, сохранение в регистре D.

. После загрузки данных из регистра В происходит сдвиг аккумулятора влево на три разряда для установки Х5 в нулевой разряд.

. Происходит логическое умножение аккумулятора и данных в регистре D, результат операции "" сохраняется в регистре D.

. После загрузки данных из регистра В происходит сдвиг аккумулятора вправо на три разряда для установки Х3 в нулевой разряд, сохранение аккумулятора в регистре L.

. Происходит сдвиг аккумулятора на еще один разряд для установки в нулевом разряде Х4, сохранение аккумулятора в регистре Н.

. После загрузки в аккумулятор данных из регистра L происходит инвертирование аккумулятора для установки  в нулевом разряде.

. Происходит логическое умножение аккумулятора и содержимого регистра Н, результата операции "" сохраняется в аккумуляторе.

. Происходит логическое сложение аккумулятора и данных регистра D, результат операции "" записывается в регистр D.

. После загрузки данных из регистра В происходит сдвиг аккумулятора вправо для установки Х2 в нулевой разряд.

. Происходит логическое умножение аккумулятора и данных в регистре D, результат Y2 операции "" записывается в регистре D.

. Загружается маска в регистр Е.

. После загрузки в аккумулятор данных из регистра D происходит логическое умножение аккумулятора и данных регистра Е, тем самым обнуляются незначащие биты числа.

. Происходит сдвиг аккумулятора влево на один разряд, для установки Y2 в первом разряде, сохранение аккумулятора в регистре D.

. После загрузки в аккумулятор данных из регистра С, происходит логическое умножение аккумулятора и данных регистра Е, тем самым обнуляются незначащие биты числа.

. Происходит логическое сложение аккумулятора и данных регистра D.

. Выходные данные Y1 и Y2 выводятся соответственно через нулевой и первый разряды шины данных.

. После указанных операций происходит безусловный переход к началу программы, в результате получается бесконечный цикл ввода, преобразования и вывода данных.

2.4 Программа 1 на языке Ассемблера


Ниже приведена таблица, в которой дано подробное описание программы 1 на языке Ассемблера в машинных кодах, а также мнемокод, описание и комментарий к каждой команде.

Таблица 2.

Метки

Адрес

Данные

Мнемокод

Описание команды

Комментарий к команде

М1

0800 0801

DB 01

IN 01

 (A)  (01) Ввод в порт по адресу 01h входных данных



0802

47

MOV B,A

 (B)  (A) сохранение аккумулятора в регистре В



0803

0F

RRC

СДВИГ ВПРАВО

сдвиг аккумулятора вправо на один разряд


0804

57

MOV D,A

 (D)  (A) сохранение аккумулятора в регистре D



0805

0F

RRC

СДВИГ ВПРАВО

сдвиг аккумулятора вправо на один разряд


0806

2F

CMA

 (A)  () Инвертирование аккумулятора



0807

B2

ORA D

 (A)  (A)  (D) логическое сложение аккумулятора и данных в D



0808

57

MOV D,A

 (D)  (A) сохранение аккумулятора в регистре D



0809

78

MOV A,B

 (A)  (B) загрузка данных с регистра В в аккумулятор



080A

2F

CMA

 (A)  () Инвертирование аккумулятора



080B

A2

ANA D

 (A)  (A)  (D) логическое умножение аккумулятора и данных в регистре D



080C

4F

MOV C,A

 (C)  (A) сохранение аккумулятора в регистре C



080D

78

MOV A,B

 (A)  (B) загрузка данных с регистра В в аккумулятор



080E

0F

RRC

СДВИГ ВПРАВО

сдвиг аккумулятора вправо на один разряд


080F

0F

RRC

СДВИГ ВПРАВО

сдвиг аккумулятора вправо на один разряд


0810

0F

RRC

СДВИГ ВПРАВО

сдвиг аккумулятора вправо на один разряд


0811

B1

ORA C

 (A)  (A)  (C) логическое сложение аккумулятора и данных в C



0812

4F

MOV C,A

 (C)  (A) сохранение аккумулятора в регистре C



0813

78

MOV A,B

 (A)  (B) загрузка данных с регистра В в аккумулятор



0814

0F

RRC

СДВИГ ВПРАВО

сдвиг аккумулятора вправо на один разряд


0815

0F

RRC

СДВИГ ВПРАВО

сдвиг аккумулятора вправо на один разряд


0816

0F

RRC

СДВИГ ВПРАВО

сдвиг аккумулятора вправо на один разряд


0817

0F

RRC

СДВИГ ВПРАВО

сдвиг аккумулятора вправо на один разряд


0818

A1

ANA C

 (A)  (A)  (C) логическое умножение аккумулятора и данных в регистре C



0819

4F

MOV C,A

 (C)  (A) сохранение аккумулятора в регистре C



081A

07

RLC

СДВИГ ВЛЕВО

сдвиг аккумулятора на один разряд влево


081B

07

RLC

СДВИГ ВЛЕВО

сдвиг аккумулятора на один разряд влево


081C

07

RLC

СДВИГ ВЛЕВО

сдвиг аккумулятора на один разряд влево


081D

2F

CMA

 (A)  () инвертирование аккумулятора



081E

B1

ORA C

 (A)  (A)  (C) логическое сложение аккумулятора и данных в C



081F

4F

MOV C,A

 (C)  (A) сохранение аккумулятора в регистре C

07

RLC

СДВИГ ВЛЕВО

сдвиг аккумулятора на один разряд влево


0821

07

RLC

СДВИГ ВЛЕВО

сдвиг аккумулятора на один разряд влево


0822

A1

ANA C

 (A)  (A)  (C) логическое умножение аккумулятора и данных в регистре C



0823

4F

MOV C,A

 (C)  (A) сохранение аккумулятора в регистре C



0824

78

MOV A,B

 (A)  (B) загрузка данных с регистра В в аккумулятор



0825

0F

RRC

СДВИГ ВПРАВО

сдвиг аккумулятора вправо на один разряд


0826

2F

CMA

 (A)  () инвертирование аккумулятора



0827

57

MOV D,A

 (D)  (A) сохранение аккумулятора в регистре D



0828

78

MOV A,B

 (A)  (B) загрузка данных с регистра В в аккумулятор



0829

07

RLC

СДВИГ ВЛЕВО

сдвиг аккумулятора на один разряд влево


082A

07

RLC

СДВИГ ВЛЕВО

сдвиг аккумулятора на один разряд влево


082B

07

RLC

СДВИГ ВЛЕВО

сдвиг аккумулятора на один разряд влево


082C

A2

ANA D

 (A)  (A)  (D) логическое умножение аккумулятора и данных в регистре D



082D

57

MOV D,A

 (D)  (A) сохранение аккумулятора в регистре D



082E

78

MOV A,B

 (A)  (B) загрузка данных с регистра В в аккумулятор



082F

0F

RRC

СДВИГ ВПРАВО

сдвиг аккумулятора вправо на один разряд

 

0830

0F

RRC

СДВИГ ВПРАВО

сдвиг аккумулятора вправо на один разряд


0831

0F

RRC

СДВИГ ВПРАВО

сдвиг аккумулятора вправо на один разряд

 

0832

6F

MOV L,A

 (L)  (A) загрузка данных с аккумулятора в регистор L



0833

0F

RRC

СДВИГ ВПРАВО

сдвиг аккумулятора вправо на один разряд


0834

67

MOV H,A

 (H)  (A) загрузка данных с аккумулятора в регистор H



0835

7D

MOV A,L

 (A)  (L) загрузка данных с регистра L в аккумулятор



0836

2F

CMA

 (A)  () инвертирование аккумулятора



0837

A4

ANA H

 (A)  (A)  (H) логическое умножение аккумулятора и данных в регистре H



0838

B2

ORA D

 (A)  (A)  (D) логическое сложение аккумулятора и данных в D



0839

57

MOV D,A

 (D)  (A) загрузка данных с аккумулятора в регистор D



083A

78

MOV A,B

 (A)  (B) загрузка данных с регистра В в аккумулятор



083B

0F

RRC

СДВИГ ВПРАВО

сдвиг аккумулятора вправо на один разряд


083C

0F

RRC

СДВИГ ВПРАВО

сдвиг аккумулятора вправо на один разряд


083D

A2

ANA D

 (A)  (A)  (D) логическое умножение аккумулятора и данных в регистре D



083E

57

MOV D,A

 (D)  (A) загрузка данных с аккумулятора в регистор D



083F 0840

1E 01

MVI E,01

 (E)  (01) запись данных 01h в регистр E



0841

7A

MOV A,D

 (A)  (D) загрузка данных с регистра D в аккумулятор



0842

A3

ANA E

 (A)  (A)  (E) логическое умножение аккумулятора и данных в регистре E



0843

07

RLC

СДВИГ ВЛЕВО

сдвиг аккумулятора на один разряд влево


0844

57

MOV D,A

 (D)  (A) загрузка данных с аккумулятора в регистор D



0845

79

MOV A,C

 (A)  (C) загрузка данных с регистра C в аккумулятор



0846

A3

ANA E

 (A)  (A)  (E) логическое умножение аккумулятора и данных в регистре E



0847

B2

ORA D

 (A)  (A)  (D) логическое сложение аккумулятора и данных в D



0848 0849

D3 80

OUT 80

 (80)  (A) Вывод в порт по адресу 80h выходных данных



084A 084B 084C

C3 00 08

JMP M1

 (PC)  (0800) безусловный переход на адрес 0800h



2.5 Блок-схема 2







2.6 Описание алгоритма реализации программы 2


М1 - 1. Входные данные загружаются в аккумулятор.

. Для последующего использования данные сохраняются в регистре В.

. Загружается маска 52h в регистор Е, происходит логическое умножение данных регистра Е на аккумулятор (маскирование).

. Происходит логическое вычитание аккумулятора и данных регистра Е, результат сохраняется в регистре С.

. Обнуление аккумулятора. Сравнение данных регистра С с аккумулятором.

. Переход на метку М2 если результат не равен нулю.

. Если в результате действий регистор С равен нулю, то аккумулятору присваивается значение 01h, что соответствует Y1=1.

. Загрузка данных аккумулятора в регистор Н, после происходит переход на метку М5.

М2 - 9. После загрузки данных из регистра В в аккумулятор, загружается маска 50h в регистр Е, происходит логическое умножение данных регистра Е на аккумулятор (маскирование).

. Происходит логическое вычитание аккумулятора и данных регистра Е, результат сохраняется в регистре С.

. Обнуление аккумулятора. Сравнение данных регистра С с аккумулятором.

. Переход на метку М3 если результат не равен нулю.

. Если в результате действий регистор С равен нулю, то аккумулятору присваивается значение 01h, что соответствует Y1=1.

. Загрузка данных аккумулятора в регистор Н, после происходит переход на метку М5.

М3 - 15. После загрузки данных из регистра В в аккумулятор, загружается маска 58h в регистр Е, происходит логическое умножение данных регистра Е на аккумулятор (маскирование).

. Происходит логическое вычитание аккумулятора и данных регистра Е, результат сохраняется в регистре С.

. Обнуление аккумулятора. Сравнение данных регистра С с аккумулятором.

. Переход на метку М4 если результат не равен нулю.

. Если в результате действий регистор С равен нулю, то аккумулятору присваивается значение 01h, что соответствует Y1=1.

. Загрузка данных аккумулятора в регистор Н, после происходит переход на метку М5.

М4 - 21. После загрузки данных из регистра В в аккумулятор, загружается маска 40h в регистр Е, происходит логическое умножение данных регистра Е на аккумулятор (маскирование).

. Происходит логическое вычитание аккумулятора и данных регистра Е, результат сохраняется в регистре С.

. Обнуление аккумулятора. Сравнение данных регистра С с аккумулятором.

. Переход на метку М5 если результат не равен нулю.

. Если в результате действий регистор С равен нулю, то аккумулятору присваивается значение 01h, что соответствует Y1=1.

. Загрузка данных аккумулятора в регистор Н.

М5 - 27. После загрузки данных из регистра В в аккумулятор, загружается маска 13h в регистр Е, происходит логическое умножение данных регистра Е на аккумулятор (маскирование).

. Происходит логическое вычитание аккумулятора и данных регистра Е, результат сохраняется в регистре С.

. Обнуление аккумулятора. Сравнение данных регистра С с аккумулятором.

. Переход на метку М6 если результат не равен нулю.

. Если в результате действий регистор С равен нулю, то аккумулятору присваивается значение 02h, что соответствует Y2=1.

. Происходит логическое сложение аккумулятора и данных регистра Н, результат сохраняется в аккумуляторе, в нулевом и первом разряде которого сохраняются состояния Y1 и Y2 соответственно.

. Выходные данные Y1 и Y2 выводятся соответственно через нулевой и первый разряды шины данных, после чего происходит безусловный переход на начало программы.

М6 - 34. После загрузки данных из регистра В в аккумулятор, загружается маска 23h в регистр Е, происходит логическое умножение данных регистра Е на аккумулятор (маскирование).

. Происходит логическое вычитание аккумулятора и данных регистра Е, результат сохраняется в регистре С.

. Обнуление аккумулятора. Сравнение данных регистра С с аккумулятором.

. Переход на метку М7 если результат не равен нулю.

. Если в результате действий регистор С равен нулю, то аккумулятору присваивается значение 02h, что соответствует Y2=1.

. Происходит логическое сложение аккумулятора и данных регистра Н, результат сохраняется в аккумуляторе, в нулевом и первом разряде которого сохраняются состояния Y1 и Y2 соответственно

. Выходные данные Y1 и Y2 выводятся соответственно через нулевой и первый разряды шины данных, после чего происходит безусловный переход на начало программы.

М7 - 41. После загрузки данных из регистра Н в аккумулятор, данные выводятся на шину данных.

. Происходит безусловный переход на начало программы, в результате получается бесконечный цикл ввода, преобразования и вывода данных.

2.7 Программа 2 на языке Ассемблера


Ниже приведена таблица, в которой дано подробное описание программы 2 на языке Ассемблера в машинных кодах, а также мнемокод, описание и комментарий к каждой команде.

Таблица 3.

Метки

Адрес

Данные

Мнемокод

Описание команды

Комментарий к команде

М1

0800 0801

26 00

MVI H,01

 (H)  (00) запись данных 00h в регистор Н



0802 0803

DB 01

IN 01

 (A)  (01) Ввод в порт по адресу 01h входных данных



0804

47

MOV B,A

 (B)  (A) сохранение аккумулятора в регистре В



0805 0806

1Е 52

MVI E,52

 (E) 52hзапись данных 52h в регистр E



0807

A3

ANA Е

 (A)  (A)  (Е) логическое умножение аккумулятора и данных в регистре Е



0808

93

SUB E

 (A)  (A) - (Е) Вычитание из аккумулятора содержимого регистра Е



0809

4F

MOV С,A

 (C)  (A) сохранение аккумулятора в регистре C



080A 080B

3Е 00

MVI A,00

 (A) 00hзапись данных 00h в аккумулятор



080C

В9

CMP C

If (А) = (С) then

Сравнение содержимого регистраС с аккумулятором


080D 080E 080F

C2 15 08

JNZ M2

JMP if Z=0

Переход при выполнении условия Z=0


0810 0811

26 01

MVI H,01

 (H) 01hзапись данных 01h в регистор Н



0812 0813 0814

CA 45 08

JZ M5

JMP if Z=1

Переход при выполнении условия Z=1

M2

0815

78

MOV A,B

 (A)  (B) загрузка данных с регистра В в аккумулятор



0816 0817

1Е 50

MVI E,50

 (E) 00hзапись данных 50h в регистр E



0818

A3

ANA Е

 (A)  (A)  (Е) логическое умножение аккумулятора и данных в регистре Е



0819

93

SUB E

 (A)  (A) - (Е) Вычитание из аккумулятора содержимого регистра Е



081A

4F

MOV С,A

 (C)  (A) сохранение аккумулятора в регистре C



081B 081C

3Е 00

MVI A,00

 (A) 00hзапись данных 00h в аккумулятор



081D

В9

CMP C

If (А) = (С) then

Сравнение содержимого регистраС с аккумулятором


081E 081F 0820

C2 26 08

JNZ M3

JMP if Z=0

Переход при выполнении условия Z=0

 

0821 0822

26 01

MVI Н,01

 (Н) 01hзапись данных 01h в регистор Н



0823 0824 0825

CA 45 08

JZ M5

JMP if Z=1

Переход при выполнении условия Z=1

M3

0826

78

MOV A,B

 (A)  (B) загрузка данных с регистра В в аккумулятор



0827 0828

1Е 58

MVI E,58

 (E) 58hзапись данных 58h в регистр E



0829

A3

ANA Е

 (A)  (A)  (Е) логическое умножение аккумулятора и данных в регистре Е



082A

93

SUB E

 (A)  (A) - (Е) Вычитание из аккумулятора содержимого регистра Е



082B

4F

MOV С,A



082C 082D

3Е 00

MVI A,00

 (A) 00hзапись данных 00h в аккумулятор



082E

В9

CMP C

If (А) = (С) then

Сравнение содержимого регистраС с аккумулятором


082F 0830 0831

C2 37 08

JNZ M4

JMP if Z=0

Переход при выполнении условия Z=0


0832 0833

26 01

MVI Н,01

 (Н) 01hзапись данных 01h в регистор Н



0834 0835 0836

CA 45 08

JZ M5

JMP if Z=1

Переход при выполнении условия Z=1

M4

0837

78

MOV A,B

 (A)  (B) загрузка данных с регистра В в аккумулятор



0838 0839

1Е 40

MVI E,40

 (E) 40hзапись данных 40h в регистр E



083A

A3

ANA Е

 (A)  (A)  (Е) логическое умножение аккумулятора и данных в регистре Е



083B

93

SUB E

 (A)  (A) - (Е) Вычитание из аккумулятора содержимого регистра Е



083C

4F

MOV С,A

 (C)  (A) сохранение аккумулятора в регистре C



083D 083E

3Е 00

MVI A,00

 (A) 00hзапись данных 00h в аккумулятор



083F

В9

CMP C

If (А) = (С) then

Сравнение содержимого регистраС с аккумулятором


0840 0841 0842

C2 4E 08

JNZ M5

JMP if Z=0

Переход при выполнении условия Z=0


0843 0844

26 01

MVI Н,01

 (Н) 01hзапись данных 01h в регистор Н


M5

0845

78

MOV A,B

 (A)  (B) загрузка данных с регистра В в аккумулятор



0846 0847

1Е 13

MVI E,13

 (E) 13hзапись данных 13h в регистр E



0848

A3

ANA Е

 (A)  (A)  (Е) логическое умножение аккумулятора и данных в регистре Е



0849

93

SUB E

 (A)  (A) - (Е) Вычитание из аккумулятора содержимого регистра Е



084A

4F

MOV С,A

 (C)  (A) сохранение аккумулятора в регистре C



084B 084C

3Е 00

MVI A,00

 (A) 00hзапись данных 00h в аккумулятор



084D

В9

CMP C

If (А) = (С) then

Сравнение содержимого регистраС с аккумулятором


084E 084F 0850

C2 59 08

JNZ M6

JMP if Z=0

Переход при выполнении условия Z=0


0851 0852

3E 02

MVI A,02

 (A) 02hзапись данных 02h в аккумулятор



0853

В4

ORA H

 (A)  (A)  (H) логическое сложение аккумулятора и данных в H



0854 0855

D3 80

OUT 80

 (80)  (A) Вывод в порт по адресу 80h выходных данных



0856 0857 0858

C3 00 08

JMP M1

JMP

Безусловный переход на метку М1

M6

0859

78

MOV A,B

 (A)  (B) загрузка данных с регистра В в аккумулятор



085A 085B

1Е 23

MVI E,23

 (E)  (23) запись данных 23h в регистр E



085C

A3

ANA Е

 (A)  (A)  (Е) логическое умножение аккумулятора и данных в регистре Е



085D

93

SUB E

 (A)  (A) - (Е) Вычитание из аккумулятора содержимого регистра Е



085E

4F

MOV С,A

 (C)  (A) сохранение аккумулятора в регистре C



085F 0860

3Е 00

MVI A,00

 (A) 00hзапись данных 00h в аккумулятор



0861

В9

CMP C

If (А) = (С) then

Сравнение содержимого регистраС с аккумулятором


0862 0863 0864

C2 6D 08

JNZ M7

JMP if Z=0

Переход при выполнении условия Z=0


0865 0866

3E 02

MVI A,02

 (A) 02hзапись данных 02h в аккумулятор



0867

В4

ORA H

 (A)  (A)  (H) логическое сложение аккумулятора и данных в H



0868 0869

D3 80

OUT 80

 (80)  (A) Вывод в порт по адресу 80h выходных данных



086A 086B 086C

C3 00 08

JMP M1

JMP if Z=1

Безусловный переход на начало программы

M7

086D

7C

MOV A,H

 (A)  (H) загрузка данных с регистра H в аккумулятор



086E 086F

D3 80

OUT 80

 (80)  (A) Вывод в порт по адресу 80h выходных данных



0870 0871 0872

C3 00 08

JMP M1

JMP

Безусловный переход на начало программы



2.9 Блок-схема 3





2.10. Описание алгоритма реализации программы 3


1. Входные данные загружаются в аккумулятор.

. Для последующего использования данные сохраняются в регистре В.

. Сдвиг аккумулятора на один разряд вправо, значение бита Х6 сохраняется в регистре признаков С.

. Переход на метку М1 если С=0, иначе сдвиг аккумулятора вправо на один разряд, значение бита Х5 сохраняется в регистре признаков С.

. Переход на метку М2 если С=0, иначе сдвиг аккумулятора вправо на один разряд, значение бита Х4 сохраняется в регистре признаков С.

. Переход на метку М1 если С=0, иначе сдвиг аккумулятора вправо на один разряд, значение бита Х3 сохраняется в регистре признаков С.

. Переход на метку М2 если С=1, иначе сдвиг аккумулятора вправо на три разряда, значение бита Х0 сохраняется в регистре признаков С.

. Переход на метку М1 если С=1, иначе сдвиг аккумулятора влево на три разряда, значение бита Х2 сохраняется в регистре признаков С.

. Переход на метку М2 если С=0, иначе сдвиг аккумулятора вправо на два разряда, значение бита Х1 сохраняется в регистре признаков С.

. Переход на метку М2 если С=1.

М1 - 11. В регистр D загружаются данные 00h (Y1=0).

. Происходит безусловный переход на метку М3.

М2 - 13. В регистр D загружаются данные 01h (Y1=1).

М3 - 14. В аккумулятор загружаются данные из регистра В.

. Происходит сдвиг аккумулятора на 4 разряда влево, значение бита Х2 сохраняется в регистре признаков С.

. Переход на метку М4 если С=0, иначе сдвиг аккумулятора влево на один разряд, значение бита Х3 сохраняется в регистре признаков С.

. Переход на метку М5 если С=1, иначе сдвиг аккумулятора влево на один разряд, значение бита Х4 сохраняется в регистре признаков С.

. Переход на метку М5 если С=0.

. В аккумулятор загружаются данные 02h (Y2=1).

. Происходит логическое сложение данных аккумулятора и данных регистра D, результат операции сохраняется в аккумуляторе.

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

М5 - 22. В аккумулятор загружаются данные из регистра В.

. Происходит сдвиг аккумулятора на 2 разряда вправо, значение бита Х5 сохраняется в регистре признаков С.

. Переход на метку М4 если С=0, иначе сдвиг аккумулятора вправо на четыре разряда, значение бита Х1 сохраняется в регистре признаков С.

. Переход на метку М4 если С=1.

. В аккумулятор загружаются данные 02h (Y2=1).

. Происходит логическое сложение данных аккумулятора и данных регистра D, результат операции сохраняется в аккумуляторе.

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

. В аккумулятор загружаются данные 00h (Y2=0).

. Происходит логическое сложение данных аккумулятора и данных регистра D, результат операции сохраняется в аккумуляторе.

. Данные аккумулятора выводятся на шину данных, происходит безусловный переход на начало программы. В результате получается бесконечный цикл ввода, преобразования и вывода данных.

2.11. Программа 3 на языке Ассемблера


Ниже приведена таблица, в которой дано подробное описание программы 3 на языке Ассемблера в машинных кодах, а также мнемокод, описание и комментарий к каждой команде.

Таблица 4.

Метки

Адрес

Данные

Мнемокод

Описание команды

Комментарий к команде

М6

0800 0801

DB 01

IN 01

 (A)  (01) Ввод в порт по адресу 01h входных данных



0802

47

MOV B,A

 (B)  (A) сохранение аккумулятора в регистре В



0803

0F

RRC

СДВИГ ВПРАВО

сдвиг аккумулятора вправо на один разряд


0804 0805 0806

D2 23 08

JNС M1

JMP if С=0

Переход при выполнении условия С=0


0807

0F

RRC

СДВИГ ВПРАВО

сдвиг аккумулятора вправо на один разряд


0808 0809 080А

D2 28 08

JNС M2

JMP if С=0

Переход при выполнении условия С=0


080В

0F

RRC

СДВИГ ВПРАВО

сдвиг аккумулятора вправо на один разряд


080С 080D 080E

D2 23 08

JNС M1

JMP if С=0

Переход при выполнении условия С=0


080F

0F

RRC

СДВИГ ВПРАВО

сдвиг аккумулятора вправо на один разряд


0810 0811 0812

DA 28 08

JС M2

JMP if С=1

Переход при выполнении условия С=1


0813

0F

RRC

СДВИГ ВПРАВО

сдвиг аккумулятора вправо на один разряд


0814

0F

RRC

СДВИГ ВПРАВО

сдвиг аккумулятора вправо на один разряд


0815

0F

RRC

СДВИГ ВПРАВО

сдвиг аккумулятора вправо на один разряд


0816 0817 0818

DA 23 08

JС M1

JMP if С=1

Переход при выполнении условия С=1


0819

07

RLC

СДВИГ ВЛЕВО

сдвиг аккумулятора влево на один разряд


081A

07

RLC

СДВИГ ВЛЕВО

сдвиг аккумулятора влево на один разряд


081B

07

RLC

СДВИГ ВЛЕВО

сдвиг аккумулятора влево на один разряд


081C 081D 081E

D2 28 08

JNС M2

JMP if С=0

Переход при выполнении условия С=0


081F

0F

RRC

СДВИГ ВПРАВО

сдвиг аккумулятора вправо на один разряд


0820 0821 0822

DA 28 08

JС M2

JMP if С=1

Переход при выполнении условия С=1

М1

0823 0824

16 00

MVI D,00h

 (D) 00hзапись данных 00h в аккумулятор



0825 0826 0827

C3 2A 08

JMP M3

JMP

Безусловный переход на метку М3

М2

0828 0829

16 01

MVI D,01h

 (D) 01hзапись данных 10h в аккумулятор


M3

082A

78

MOV A,B

 (A)  (B) загрузка данных с регистра В в аккумулятор



082B

07

RLC

СДВИГ ВЛЕВО

сдвиг аккумулятора влево на один разряд


082C

07

RLC

СДВИГ ВЛЕВО


082D

07

RLC

СДВИГ ВЛЕВО

сдвиг аккумулятора влево на один разряд


082E

07

RLC

СДВИГ ВЛЕВО

сдвиг аккумулятора влево на один разряд


082F 0830 0831

D2 57 08

JNС M4

JMP if С=0

Переход при выполнении условия С=0


0832

07

RLC

СДВИГ ВЛЕВО

сдвиг аккумулятора влево на один разряд


0833 0834 0835

DA 42 08

JС M5

JMP if С=1

Переход при выполнении условия С=1


0836

07

RLC

СДВИГ ВЛЕВО

сдвиг аккумулятора влево на один разряд


0837 0838 0839

D2 42 08

JNС M5

JMP if С=0

Переход при выполнении условия С=0


083A 083B

3Е 02

MVI A,02h

 (A) 02hзапись данных 02h в аккумулятор



083C

B2

ORA D

 (A)  (A)  (D) логическое сложение аккумулятора и данных в D



083D 083E

D3 80

OUT 80

 (80)  (A) Вывод в порт по адресу 80h выходных данных



083F 0840 0841

C3 00 08

JMP M6

JMP

Безусловный переход на начало программы

M5

0842

78

MOV A,B

 (A)  (B) загрузка данных с регистра В в аккумулятор



0843

0F

RRC

СДВИГ ВПРАВО

сдвиг аккумулятора вправо на один разряд


0844

0F

RRC

СДВИГ ВПРАВО

сдвиг аккумулятора вправо на один разряд


0845 0846 0847

D2 57 08

JNС M4

JMP if С=0

Переход при выполнении условия С=0


0848

0F

RRC

СДВИГ ВПРАВО

сдвиг аккумулятора вправо на один разряд


0849

0F

RRC

СДВИГ ВПРАВО

сдвиг аккумулятора вправо на один разряд


084A

0F

RRC

СДВИГ ВПРАВО

сдвиг аккумулятора вправо на один разряд


084B

0F

RRC

СДВИГ ВПРАВО

сдвиг аккумулятора вправо на один разряд


084C 084D 084E

DA 57 08

JС M4

JMP if С=1

Переход при выполнении условия С=1


084F 0850

3Е 02

MVI A,02h

 (A) 02hзапись данных 02h в аккумулятор



0851

B2

ORA D

 (A)  (A)  (D) логическое сложение аккумулятора и данных в D



0852 0853

D3 80

OUT 80

 (80)  (A) Вывод в порт по адресу 80h выходных данных



0854 0855 0856

C3 00 08

JMP M6

JMP

Безусловный переход на начало программы

М4

0857 0858

3Е 00

MVI A,00h

 (A) 00hзапись данных 00h в аккумулятор



0859

B2

ORA D

 (A)  (A)  (D) логическое сложение аккумулятора и данных в D



085A 085B

D3 80

OUT 80

 (80)  (A) Вывод в порт по адресу 80h выходных данных



085C 085D 085E

C3 00 08

JMP M6

JMP

Безусловный переход на начало программы


2.8 Карта памяти микропроцессорной системы


УМК содержит ПЗУ объемом 2 кбайт и ОЗУ объемом 1 кбайт. Первый кбайт ПЗУ использован для хранения программы "системный монитор", а второй кбайт ПЗУ зарезервирован за пользователем. Третий кбайт памяти УМК используется для адресации ОЗУ. Необходимо отметить, что последние 54 ячейки памяти ОЗУ используются программой "системный монитор" для хранения оперативных данных.

Для удобства пользования информация о распределении адресного поля сводится в карту памяти.

1

9

17

25

33

41

49

57

2

10

18

26

34

42

50

58

3

11

19

27

35

43

51

59

4

12

20

28

36

44

52

60

5

13

21

29

37

45

53

61

6

14

22

30

38

46

54

62

7

15

23

31

39

47

55

63

8

16

24

32

40

48

56

64

Рисунок 4. Карта памяти

Пояснения к рисунку 4:

1 - программа "системный монитор" занимает 756 байт в адресном поле 0000…02FF ПЗУ;

- дополнительная область программы "системный монитор" занимает 256 байт в адресном поле 0300…03FF ПЗУ;

- программа объемом 52 байт и оставшаяся свободная память ОЗУ объемом 924 размешены в адресном поле 0800…08С6;

- рабочая область программы "системный монитор" объемом 57 байт в адресном поле 08С7…08FF ПЗУ

2.9 Анализ временных характеристик


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

Необходимо рассчитать время выполнения одного цикла каждой программы. Расчет будем вести учитывая, что частота микропроцессора 2 МГц.

2.9.1 Расчет времени выполнения программы 1

Число тактов за которые выполняются команды:

IN port - 10 тактов;port - 10 тактов; d,S - 5 тактов;

RRC - 4 такта;

RRL - 4 такта;

CMA - 4 такта;

ANA S - 4 такта;

ORA S - 4 такта;d,data - 7 тактов;

JMP addr - 10 тактов.

Время одного цикла программы 1:

 с.

2.9.2 Расчет времени выполнения программы 2

Число тактов за которые выполняются команды:

IN port - 10 тактов;port - 10 тактов; d,S - 5 тактов;

SUB S - 7 тактов;

СМР S - 7 тактов;

JNZ,JZ - 10 тактов;

ANA S - 4 такта;d,data - 7 тактов;

JMP addr - 10 тактов.

Время одного цикла программы 2:

 с.

2.9.3 Расчет времени выполнения программы 3

Следует отметить, что в программе 3 будут рассчитаны минимальное и максимальное время выполнения программы.

Минимальное время программы будет при выполнении следующих команд:

IN port - 10 тактов;port - 10 тактов; d,S - 5 тактов;

JNС - 10 тактов;

MVI d,data - 7 тактов;

RRC,RLC - 4 такта;

ORA S - 4 такта;

JMP addr - 10 тактов.

с.

Максимальное время программы будет при выполнении следующих команд:

IN port - 10 тактов;port - 10 тактов; d,S - 5 тактов;

JNС - 10 тактов;

JС - 10 тактов;

MVI d,data - 7 тактов;

RRC,RLC - 4 такта;S - 4 такта;

JMP addr - 10 тактов.


3. Вывод


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

В курсовом приведено три программы с помощью которых возможно реализовать данную схему. Анализируя временные характеристики выполнения программ можно сделать вывод, что программа 3 максимально подходит для решения задачи курсового проекта. Время выполнения программы 3 на порядок меньше чем у программ 1 и 2.

Для упрощения программы 2 рациональным выглядит использование подпрограммы, но данное действие привело бы к увеличению времени выполнения программы. Это не соответствует условию, что время между изменением состоянием реле  и изменением состояния  должно быть минимальным.

Для реализации программы 3 между шиной данных и портом ввода ставиться гальваническая развязка. Именно благодаря этой операции удается на порядок снизить время выполнения программы.

Также следует отметить, что говоря о времени выполнения программы, имеется ввиду время выполнения одного цикла программы.

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

x

x

x

x

x

x

Y2

Y1

D7

D6

D5

D4

D3

D2

D1

D0


где х - незначащий бит.

4. Список литературы


1. Лукьянов С.И., Панов А.Н., Сидельникова Е.И., Васильев А.Е. Микропроцессоры: Учебное пособие. - Магнитогорск: МГТУ, 2004.

. Лукьянов С.И., Панов А.Н., Сидельникова Е.И., Васильев А.Е. Лабораторный практикум по курсу "Электронные промышленные устройства": Учебное пособие. - Магнитогорск: МГТУ, 2004.

. Лукьянов С.И., Швидченко Д.В., Суспицын Е.С. Курсовое проектирование по дисциплинам "Машинные языки программирования" и "Основы микропроцессорной техники": Учебное пособие. Магнитогорск: МГТУ, 2005.

. Токхайм Р. Микропроцессоры: Курс и упражнения. - Москва: Энергоатомизат, 1988.


Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!