Помощь в учёбе, очень быстро...
Работаем вместе до победы

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

КурсоваяПомощь в написанииУзнать стоимостьмоей работы

Рисунок 1. Функциональная схема устройства Состояние бита соответствует разомкнутому состоянию реле, т. е. напряжение на зажимах 1−2 катушки реле отсутствует. Такому состоянию реле соответствует разомкнутое состояние () нормальноразомкнутого контакта 3−4 и замкнутое состояние () нормальнозамкнутого контакта 5−6. При подаче напряжения на обмотку катушки реле (контакты 1−2) () состояние его… Читать ещё >

Реализация фрагмента контактной схемы программным методом (реферат, курсовая, диплом, контрольная)

  • 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. Выполнить анализ поставленной задачи, согласно варианту задания. Определить методы ее решения.

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

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

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

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

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

7. Вывод.

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 замыкается (его состояние становится равным), а нормальнозамкнутый контакт 56 размыкается (его состояние становится равным).

Рисунок 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

x

x

x

х

x

x

x

х

x

x

x

x

х

x

x

x

x

x

х

x

x

x

x

х

x

x

x

x

х

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

Следует отметить, что при реализации данной таблицы истинности, был учтен тот факт, что значения 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. Входные данные загружаются в аккумулятор.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Таблица 2.

Метки

Адрес

Данные

Мнемокод

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

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

М1

DB

IN 01

(A) (01)

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

MOV B, A

(B) (A)

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

0F

RRC

СДВИГ ВПРАВО

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

MOV D, A

(D) (A)

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

0F

RRC

СДВИГ ВПРАВО

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

2F

CMA

(A) ()

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

B2

ORA D

(A) (A) (D)

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

MOV D, A

(D) (A)

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

MOV A, B

(A) (B)

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

080A

2F

CMA

(A) ()

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

080B

A2

ANA D

(A) (A) (D)

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

080C

4F

MOV C, A

© (A)

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

080D

MOV A, B

(A) (B)

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

080E

0F

RRC

СДВИГ ВПРАВО

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

080F

0F

RRC

СДВИГ ВПРАВО

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

0F

RRC

СДВИГ ВПРАВО

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

B1

ORA C

(A) (A) (C)

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

4F

MOV C, A

© (A)

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

MOV A, B

(A) (B)

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

0F

RRC

СДВИГ ВПРАВО

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

0F

RRC

СДВИГ ВПРАВО

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

0F

RRC

СДВИГ ВПРАВО

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

0F

RRC

СДВИГ ВПРАВО

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

A1

ANA C

(A) (A) (C)

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

4F

MOV C, A

© (A)

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

081A

RLC

СДВИГ ВЛЕВО

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

081B

RLC

СДВИГ ВЛЕВО

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

081C

RLC

СДВИГ ВЛЕВО

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

081D

2F

CMA

(A) ()

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

081E

B1

ORA C

(A) (A) (C)

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

081F

4F

MOV C, A

© (A)

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

RLC

СДВИГ ВЛЕВО

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

RLC

СДВИГ ВЛЕВО

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

A1

ANA C

(A) (A) (C)

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

4F

MOV C, A

© (A)

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

MOV A, B

(A) (B)

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

0F

RRC

СДВИГ ВПРАВО

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

2F

CMA

(A) ()

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

MOV D, A

(D) (A)

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

MOV A, B

(A) (B)

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

RLC

СДВИГ ВЛЕВО

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

082A

RLC

СДВИГ ВЛЕВО

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

082B

RLC

СДВИГ ВЛЕВО

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

082C

A2

ANA D

(A) (A) (D)

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

082D

MOV D, A

(D) (A)

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

082E

MOV A, B

(A) (B)

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

082F

0F

RRC

СДВИГ ВПРАВО

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

0F

RRC

СДВИГ ВПРАВО

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

0F

RRC

СДВИГ ВПРАВО

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

6F

MOV L, A

(L) (A)

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

0F

RRC

СДВИГ ВПРАВО

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

MOV H, A

(H) (A)

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

7D

MOV A, L

(A) (L)

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

2F

CMA

(A) ()

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

A4

ANA H

(A) (A) (H)

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

B2

ORA D

(A) (A) (D)

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

MOV D, A

(D) (A)

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

083A

MOV A, B

(A) (B)

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

083B

0F

RRC

СДВИГ ВПРАВО

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

083C

0F

RRC

СДВИГ ВПРАВО

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

083D

A2

ANA D

(A) (A) (D)

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

083E

MOV D, A

(D) (A)

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

083F

1E

MVI E, 01

(E) (01)

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

7A

MOV A, D

(A) (D)

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

A3

ANA E

(A) (A) (E)

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

RLC

СДВИГ ВЛЕВО

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

MOV D, A

(D) (A)

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

MOV A, C

(A) (C)

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

A3

ANA E

(A) (A) (E)

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

B2

ORA D

(A) (A) (D)

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

D3

OUT 80

(80) (A)

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

084A

084B

084C

C3

JMP M1

(PC) (0800)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Таблица 3.

Метки

Адрес

Данные

Мнемокод

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

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

М1

MVI H, 01

(H) (00)

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

DB

IN 01

(A) (01)

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

MOV B, A

(B) (A)

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

MVI E, 52

(E) 52h

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

A3

ANA Е

(A) (A) (Е)

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

SUB E

(A) (A) — (Е)

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

4F

MOV С, A

© (A)

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

080A

080B

MVI A, 00

(A) 00h

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

080C

В9

CMP C

If (А) = © then

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

080D

080E

080F

C2

JNZ M2

JMP if Z=0

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

MVI H, 01

(H) 01h

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

CA

JZ M5

JMP if Z=1

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

M2

MOV A, B

(A) (B)

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

MVI E, 50

(E) 00h

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

A3

ANA Е

(A) (A) (Е)

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

SUB E

(A) (A) — (Е)

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

081A

4F

MOV С, A

© (A)

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

081B

081C

MVI A, 00

(A) 00h

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

081D

В9

CMP C

If (А) = © then

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

081E

081F

C2

JNZ M3

JMP if Z=0

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

MVI Н, 01

(Н) 01h

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

CA

JZ M5

JMP if Z=1

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

M3

MOV A, B

(A) (B)

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

MVI E, 58

(E) 58h

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

A3

ANA Е

(A) (A) (Е)

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

082A

SUB E

(A) (A) — (Е)

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

082B

4F

MOV С, A

© (A)

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

082C

082D

MVI A, 00

(A) 00h

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

082E

В9

CMP C

If (А) = © then

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

082F

C2

JNZ M4

JMP if Z=0

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

MVI Н, 01

(Н) 01h

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

CA

JZ M5

JMP if Z=1

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

M4

MOV A, B

(A) (B)

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

MVI E, 40

(E) 40h

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

083A

A3

ANA Е

(A) (A) (Е)

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

083B

SUB E

(A) (A) — (Е)

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

083C

4F

MOV С, A

© (A)

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

083D

083E

MVI A, 00

(A) 00h

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

083F

В9

CMP C

If (А) = © then

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

C2

4E

JNZ M5

JMP if Z=0

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

MVI Н, 01

(Н) 01h

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

M5

MOV A, B

(A) (B)

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

MVI E, 13

(E) 13h

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

A3

ANA Е

(A) (A) (Е)

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

SUB E

(A) (A) — (Е)

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

084A

4F

MOV С, A

© (A)

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

084B

084C

MVI A, 00

(A) 00h

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

084D

В9

CMP C

If (А) = © then

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

084E

084F

C2

JNZ M6

JMP if Z=0

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

3E

MVI A, 02

(A) 02h

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

В4

ORA H

(A) (A) (H)

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

D3

OUT 80

(80) (A)

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

C3

JMP M1

JMP

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

M6

MOV A, B

(A) (B)

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

085A

085B

MVI E, 23

(E) (23)

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

085C

A3

ANA Е

(A) (A) (Е)

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

085D

SUB E

(A) (A) — (Е)

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

085E

4F

MOV С, A

© (A)

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

085F

MVI A, 00

(A) 00h

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

В9

CMP C

If (А) = © then

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

C2

6D

JNZ M7

JMP if Z=0

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

3E

MVI A, 02

(A) 02h

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

В4

ORA H

(A) (A) (H)

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

D3

OUT 80

(80) (A)

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

086A

086B

086C

C3

JMP M1

JMP if Z=1

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

M7

086D

7C

MOV A, H

(A) (H)

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

086E

086F

D3

OUT 80

(80) (A)

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

C3

JMP M1

JMP

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Таблица 4.

Метки

Адрес

Данные

Мнемокод

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

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

М6

DB

IN 01

(A) (01)

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

MOV B, A

(B) (A)

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

0F

RRC

СДВИГ ВПРАВО

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

D2

JNС M1

JMP if С=0

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

0F

RRC

СДВИГ ВПРАВО

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

080А

D2

JNС M2

JMP if С=0

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

080В

0F

RRC

СДВИГ ВПРАВО

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

080С

080D

080E

D2

JNС M1

JMP if С=0

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

080F

0F

RRC

СДВИГ ВПРАВО

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

DA

JС M2

JMP if С=1

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

0F

RRC

СДВИГ ВПРАВО

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

0F

RRC

СДВИГ ВПРАВО

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

0F

RRC

СДВИГ ВПРАВО

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

DA

JС M1

JMP if С=1

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

RLC

СДВИГ ВЛЕВО

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

081A

RLC

СДВИГ ВЛЕВО

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

081B

RLC

СДВИГ ВЛЕВО

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

081C

081D

081E

D2

JNС M2

JMP if С=0

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

081F

0F

RRC

СДВИГ ВПРАВО

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

DA

JС M2

JMP if С=1

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

М1

MVI D, 00h

(D) 00h

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

C3

2A

JMP M3

JMP

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

М2

MVI D, 01h

(D) 01h

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

M3

082A

MOV A, B

(A) (B)

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

082B

RLC

СДВИГ ВЛЕВО

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

082C

RLC

СДВИГ ВЛЕВО

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

082D

RLC

СДВИГ ВЛЕВО

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

082E

RLC

СДВИГ ВЛЕВО

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

082F

D2

JNС M4

JMP if С=0

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

RLC

СДВИГ ВЛЕВО

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

DA

JС M5

JMP if С=1

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

RLC

СДВИГ ВЛЕВО

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

D2

JNС M5

JMP if С=0

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

083A

083B

MVI A, 02h

(A) 02h

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

083C

B2

ORA D

(A) (A) (D)

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

083D

083E

D3

OUT 80

(80) (A)

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

083F

C3

JMP M6

JMP

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

M5

MOV A, B

(A) (B)

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

0F

RRC

СДВИГ ВПРАВО

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

0F

RRC

СДВИГ ВПРАВО

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

D2

JNС M4

JMP if С=0

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

0F

RRC

СДВИГ ВПРАВО

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

0F

RRC

СДВИГ ВПРАВО

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

084A

0F

RRC

СДВИГ ВПРАВО

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

084B

0F

RRC

СДВИГ ВПРАВО

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

084C

084D

084E

DA

JС M4

JMP if С=1

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

084F

MVI A, 02h

(A) 02h

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

B2

ORA D

(A) (A) (D)

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

D3

OUT 80

(80) (A)

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

C3

JMP M6

JMP

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

М4

MVI A, 00h

(A) 00h

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

B2

ORA D

(A) (A) (D)

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

085A

085B

D3

OUT 80

(80) (A)

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

085C

085D

085E

C3

JMP M6

JMP

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

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

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

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

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

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

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

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

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

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

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

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

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

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

IN port — 10 тактов;

OUT port — 10 тактов;

MOV d, S — 5 тактов;

RRC — 4 такта;

RRL — 4 такта;

CMA — 4 такта;

ANA S — 4 такта;

ORA S — 4 такта;

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

JMP addr — 10 тактов.

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

с.

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

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

IN port — 10 тактов;

OUT port — 10 тактов;

MOV d, S — 5 тактов;

SUB S — 7 тактов;

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

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

ANA S — 4 такта;

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

JMP addr — 10 тактов.

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

с.

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

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

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

IN port — 10 тактов;

OUT port — 10 тактов;

MOV d, S — 5 тактов;

JNС — 10 тактов;

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

RRC, RLC — 4 такта;

ORA S — 4 такта;

JMP addr — 10 тактов.

с.

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

IN port — 10 тактов;

OUT port — 10 тактов;

MOV d, S — 5 тактов;

JNС — 10 тактов;

JС — 10 тактов;

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

RRC, RLC — 4 такта;

ORA 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.

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

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

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

Показать весь текст
Заполнить форму текущей работой